Topik ini menjelaskan cara mengembangkan aplikasi tabel lebar Lindorm dengan SQL menggunakan antarmuka standar Java Database Connectivity (JDBC) dan menyediakan contoh kode.
Prasyarat
Lingkungan Java dengan JDK 1.8 atau versi yang lebih baru harus diinstal.
Alamat IP klien telah ditambahkan ke daftar putih Lindorm. Untuk informasi selengkapnya, lihat Setel daftar putih.
Batasan
Operasi dalam topik ini hanya berlaku untuk Lindorm dalam mode tabel lebar. Lindorm Serverless tidak didukung.
Prosedur
Anda dapat menggunakan potongan kode pada langkah-langkah berikut atau mengunduh kode contoh lengkap untuk dikompilasi dan dijalankan secara lokal. Kode contoh untuk topik ini terdapat dalam kelas com.aliyun.lindorm.sql.demo.BasicDemo.
Unduh client Lindorm. Untuk proyek Maven, tambahkan dependensi berikut ke bagian
dependenciespada file pom.xml.<dependency> <groupId>com.aliyun.lindorm</groupId> <artifactId>lindorm-all-client</artifactId> <version>2.2.1.3</version> </dependency>Inisialisasi client Lindorm dan buat koneksi antara client Lindorm dan data.
// Titik akhir untuk SQL LindormTable. String url = "jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060"; // Konfigurasikan parameter koneksi. Properties properties = new Properties(); // Username database yang diperoleh dari Konsol Lindorm. properties.put("user", "root"); // Password database yang diperoleh dari Konsol Lindorm. properties.put("password", "test"); // Tentukan database saat membuat koneksi. Jika tidak ditentukan, `default` akan digunakan. properties.put("database", "default"); // Dapatkan koneksi. Connection connection = DriverManager.getConnection(url, properties);PentingUntuk mengelola sumber daya server, server secara otomatis memutus koneksi client Lindorm yang tidak aktif selama 10 menit. Jika Anda mencoba menggunakan kembali koneksi tersebut, akan muncul error
com.aliyun.lindorm.client.shaded.org.apache.calcite.avatica.http.ConnectionDisconnectedException. Untuk mengatasi masalah ini, Anda harus membuat koneksi ulang.Parameter koneksi dijelaskan sebagai berikut:
Parameter
Contoh
Deskripsi
url
jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060
Lindorm Wide Table SQL Address. Untuk mendapatkan titik akhir, lihat Lihat titik akhir.
PentingJika aplikasi Anda di-deploy pada Instance ECS, akses instans Lindorm melalui virtual private cloud (VPC) untuk keamanan yang lebih tinggi dan latensi jaringan yang lebih rendah.
Jika aplikasi Anda di-deploy secara lokal, aktifkan titik akhir publik di Konsol sebelum menghubungkan ke instans Lindorm melalui jaringan publik. Untuk melakukannya, di Konsol, pilih . Pada tab Wide Table Engine, klik Enable Public Endpoint.
user
root
Jika Anda lupa password pengguna, Anda dapat mengubahnya di sistem manajemen kluster LindormTable.
password
test
database
default
Nama database yang akan dihubungkan. Secara default, database `default` akan dihubungkan.
Setelah koneksi berhasil dibuat, gunakan API Java SQL LindormTable untuk mengakses tabel lebar Lindorm. Contoh kode berikut menunjukkan cara penggunaannya:
/* -------------- Contoh operasi CRUD berbasis JDBC ----------------- */ String tableName = "sql_table_" + new Random().nextInt(1000); // Buat tabel. try (Statement statement = connection.createStatement()) { String sql = "create table if not exists " + tableName + "(id VARCHAR, name VARCHAR, primary key(id))"; int ret = statement.executeUpdate(sql); System.out.println(ret); } // Masukkan data. String upsertSql = "upsert into " + tableName + "(id,name) values(?,?)"; try (PreparedStatement ps = connection.prepareStatement(upsertSql)) { int batchSize = 100; for (int i = 0; i < batchSize; i++) { ps.setString(1, "aa" + i); ps.setString(2, "bb" + i); // Tambahkan ke batch. ps.addBatch(); } // Eksekusi semua batch tulis. // Untuk performa dan stabilitas, jangan tambahkan terlalu banyak batch. // Tulis maksimal ratusan batch dalam satu pemanggilan `executeBatch()`. int[] ret = ps.executeBatch(); System.out.println(Arrays.toString(ret)); } // Kueri data. String querySql = "select * from " + tableName + " where id=?"; try (PreparedStatement ps = connection.prepareStatement(querySql)) { ps.setString(1, "aa1"); ResultSet rs = ps.executeQuery(); while (rs.next()) { String id = rs.getString(1); String name = rs.getString(2); System.out.println("id=" + id); System.out.println("name=" + name); } } // Hapus data. String deleteSql = "delete from " + tableName + " where id=?"; try (PreparedStatement ps = connection.prepareStatement(deleteSql)) { ps.setString(1, "aa1"); ps.executeUpdate(); } // Perbarui data. // Pernyataan UPDATE SQL Lindorm hanya mendukung pembaruan baris tunggal, bukan pembaruan batch. // Artinya, klausa WHERE harus menentukan kunci primer lengkap. String updateSql = "update " + tableName + " set name = ? where id=?"; try (PreparedStatement ps = connection.prepareStatement(updateSql)) { ps.setString(1, "bb2update"); ps.setString(2, "aa2"); ps.executeUpdate(); } String querySql1 = "select * from " + tableName + " where id=?"; try (PreparedStatement ps = connection.prepareStatement(querySql1)) { ps.setString(1, "aa2"); ResultSet rs = ps.executeQuery(); System.out.println("--------- update-----------"); while (rs.next()) { String id = rs.getString(1); String name = rs.getString(2); System.out.println("id=" + id); System.out.println("name=" + name); } } // Hapus tabel. String dropTable = "drop table " + tableName; try (Statement stmt = connection.createStatement()) { stmt.execute(dropTable); } // Tutup koneksi. Pastikan koneksi ditutup setelah operasi selesai untuk mencegah kebocoran koneksi. connection.close();
Contoh akses LindormTable menggunakan framework umum
Bagian ini menyediakan contoh kode untuk mengakses LindormTable menggunakan berbagai framework Java:
Untuk mengakses LindormTable menggunakan framework Druid, lihat contoh akses Druid.
Untuk mengakses LindormTable menggunakan framework Spring, lihat contoh akses Spring.
Untuk mengakses SQL LindormTable menggunakan framework Mybatis, lihat contoh akses Mybatis.
Untuk mengakses SQL LindormTable menggunakan framework Hibernate, lihat contoh akses Hibernate.
Referensi
Untuk informasi tentang sintaks SQL LindormTable, lihat Manual Sintaks SQL.