Integrasikan driver JDBC Tablestore dengan MyBatis, sebuah framework persistensi Java, untuk menjalankan kueri SQL terhadap Tablestore dalam proyek Java Anda. Untuk informasi lebih lanjut, lihat MyBatis.
Prasyarat
Pasangan Kunci Akses untuk Pengguna RAM dengan izin
"Action": "ots:SQL*"Sebuah tabel data dan tabel pemetaan (lihat Operasi DDL)
Prosedur
Untuk mengintegrasikan MyBatis dengan driver JDBC Tablestore, ikuti langkah-langkah berikut.
Driver JDBC Tablestore mencakup pooling koneksi bawaan. Untuk menghindari masalah kompatibilitas, jangan gunakan alat kolam koneksi eksternal.
Langkah 1: Instal driver JDBC
Driver JDBC tersedia melalui Maven atau instalasi manual.
Tambahkan dependensi Maven
Untuk menggunakan driver JDBC Tablestore dalam proyek Maven, tambahkan dependensi berikut ke elemen <dependencies> dalam file pom.xml Anda. Contoh ini menggunakan versi 5.17.0:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>tablestore-jdbc</artifactId>
<version>5.17.0</version>
</dependency>
Instalasi manual
Unduh driver JDBC Tablestore dan impor ke dalam proyek Anda.
Langkah 2: Instal MyBatis
MyBatis tersedia melalui Maven atau instalasi manual.
Tambahkan dependensi Maven
Untuk menggunakan MyBatis dalam proyek Maven, tambahkan dependensi berikut ke elemen <dependencies> dalam file pom.xml Anda. Contoh ini menggunakan versi 3.5.9:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
Instalasi manual
Unduh paket MyBatis dan impor ke dalam proyek Anda.
Langkah 3: Petakan bidang SQL
-
Buat Java Bean untuk kolom tabel data. Dalam contoh ini, trip_id adalah primary key dari tabel data.
PentingNama variabel anggota pada Java Bean harus sesuai dengan nama kolom pada tabel data.
package mybatis; public class Trip { private long trip_id; private long duration; private String start_date; private String end_date; private long start_station_number; private long end_station_number; private String start_station; private String end_station; private String bike_number; private String member_type; // Contoh berikut menggunakan trip_id. Bidang lain mengikuti pola yang sama. public void setTrip_Id(Long trip_id){ this.trip_id = trip_id; } public Long getTrip_Id() { return trip_id; } } -
Buat file konfigurasi pemetaan dan definisikan kondisi kueri. Buat TripMapper.xml di direktori mybatis dengan konten berikut:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="mybatis.TripMapper"> <select id="selectTrip" resultType="mybatis.Trip"> select * from trips where trip_id = #{id} </select> </mapper>
Langkah 4: Bangun SqlSessionFactory
SqlSessionFactory membuat session MyBatis yang terhubung ke Tablestore.
-
Buat file konfigurasi MyBatis mybatis-config.xml dengan konten berikut. Ganti placeholder dengan nilai aktual Anda.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <!-- Driver JDBC Tablestore memerlukan penutupan eksplisit untuk keluar dari proses. Gunakan POOLED untuk aplikasi jangka panjang atau UNPOOLED untuk kueri satu kali. --> <dataSource type="UNPOOLED"> <property name="driver" value="com.alicloud.openservices.tablestore.jdbc.OTSDriver"/> <property name="url" value="jdbc:ots:https://myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance"/> <property name="username" value="***********************"/> <property name="password" value="********************************"/> </dataSource> </environment> </environments> <mappers> <!-- Atur ke path file konfigurasi pemetaan Anda. --> <mapper resource="mybatis/TripMapper.xml"/> </mappers> </configuration>Parameter
Tipe
Wajib
Deskripsi
driver
class
Ya
Nama kelas driver JDBC Tablestore. Atur nilai ini ke
com.alicloud.openservices.tablestore.jdbc.OTSDriver.url
string
Ya
Titik akhir instans dalam format
jdbc:ots:endpoint/instanceName. Gantiendpointdengan alamat layanan instans Anda daninstanceNamedengan nama instans Anda.username
string
Ya
ID AccessKey dari Akun Alibaba Cloud atau Pengguna RAM Anda.
password
string
Ya
Rahasia AccessKey dari Akun Alibaba Cloud atau Pengguna RAM Anda.
-
Muat file konfigurasi MyBatis untuk membangun SqlSessionFactory.
String resource = "mybatis/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
Langkah 5: Kueri data dengan SqlSession
Tablestore tidak mendukung transaksi. Atur parameter autoCommit dari openSession ke true.
SqlSession session = sqlSessionFactory.openSession(true);
Trip trip = (Trip) session.selectOne("mybatis.TripMapper.selectTrip", 99L);
System.out.println("trip id: " + trip.getTrip_id());
System.out.println("start date: " + trip.getStart_date());
System.out.println("end date: " + trip.getEnd_date());
System.out.println("duration: " + trip.getDuration());
session.close();
Contoh lengkap
Contoh berikut mengkueri baris dengan nilai primary key 99 dan mengambil nilai kolom tertentu.
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import mybatis.Trip;
import java.io.IOException;
import java.io.InputStream;
public class MyBatisDemo {
public static void main(String[] args) throws IOException {
String resource = "mybatis/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// Tablestore tidak mendukung transaksi. Atur autoCommit ke true.
SqlSession session = sqlSessionFactory.openSession(true);
Trip trip = (Trip) session.selectOne("mybatis.TripMapper.selectTrip", 99L);
System.out.println("trip id: " + trip.getTrip_id());
System.out.println("start date: " + trip.getStart_date());
System.out.println("end date: " + trip.getEnd_date());
System.out.println("duration: " + trip.getDuration());
session.close();
}
}