全部产品
Search
文档中心

Tablestore:Gunakan MyBatis untuk menanyakan data dengan menjalankan pernyataan SQL

更新时间:Jul 06, 2025

MyBatis adalah kerangka kerja persistensi Java yang mendukung pernyataan SQL kustom, prosedur tersimpan, dan pemetaan tingkat lanjut. Anda dapat menggunakan MyBatis untuk memanfaatkan driver JDBC untuk Tablestore guna mengakses Tablestore.

Informasi latar belakang

MyBatis adalah kerangka kerja persistensi Java yang mendukung pernyataan SQL kustom, prosedur tersimpan, dan pemetaan tingkat lanjut. MyBatis menghilangkan kebutuhan untuk menggunakan kode JDBC manual, mengonfigurasi parameter secara manual, dan mengambil set hasil. Untuk informasi lebih lanjut, lihat Dokumentasi MyBatis.

Catatan penggunaan

  • Fitur kueri SQL tersedia di wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Chengdu), Tiongkok (Hong Kong), Jepang (Tokyo), Singapura, Malaysia (Kuala Lumpur), Inggris (London), AS (Silicon Valley), Indonesia (Jakarta), Jerman (Frankfurt), SAU (Riyadh - Wilayah Mitra), dan AS (Virginia).

  • Driver JDBC untuk Tablestore memiliki kumpulan koneksi bawaan. Oleh karena itu, disarankan untuk tidak menggunakan kumpulan koneksi dari database eksternal guna mencegah masalah yang disebabkan oleh ketidakcocokan atau faktor lain yang tidak diketahui.

Prasyarat

  • Jika Anda ingin menanyakan data sebagai pengguna RAM, pastikan pengguna RAM telah dibuat dan semua izin operasi SQL diberikan kepada pengguna tersebut. Anda dapat mengonfigurasi "Action": "ots:SQL*" dalam kebijakan kustom yang dilampirkan pada pengguna RAM untuk memberikan semua izin operasi SQL kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Gunakan kebijakan RAM untuk memberikan izin kepada pengguna RAM.

  • Pasangan AccessKey yang terdiri dari ID AccessKey dan Rahasia AccessKey harus diperoleh. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.

  • Tabel data harus dibuat, serta tabel pemetaan untuk tabel data. Untuk informasi lebih lanjut, lihat Prosedur dan Buat tabel pemetaan untuk tabel.

Prosedur

Langkah 1: Instal driver JDBC

Anda dapat menginstal driver JDBC menggunakan salah satu metode berikut:

  • Unduh driver JDBC untuk Tablestore dan impor driver tersebut ke proyek. Untuk informasi lebih lanjut tentang jalur unduhan, lihat Driver JDBC untuk Tablestore.

  • Tambahkan dependensi ke proyek Maven.

    Untuk menggunakan driver JDBC untuk Tablestore di Maven, tambahkan dependensi yang sesuai ke file pom.xml. Dalam contoh ini, driver JDBC versi 5.17.0 digunakan. Tambahkan konten berikut ke <dependencies>:

    <dependency>
      <groupId>com.aliyun.openservices</groupId>
      <artifactId>tablestore-jdbc</artifactId>
      <version>5.17.0</version>
    </dependency>

Langkah 2: Instal MyBatis

Anda dapat menginstal MyBatis menggunakan salah satu metode berikut:

  • Unduh paket instalasi MyBatis mybatis-x.x.x.jar dan impor paket tersebut ke proyek. Untuk informasi lebih lanjut tentang jalur unduhan, lihat Paket Instalasi MyBatis.

    Dalam mybatis-x.x.x.jar, x.x.x menunjukkan nomor versi MyBatis. Pilih paket instalasi MyBatis berdasarkan kebutuhan bisnis Anda.

  • Tambahkan dependensi ke proyek Maven.

    Untuk menggunakan MyBatis di Maven, tambahkan dependensi yang sesuai ke file pom.xml. Dalam contoh ini, SDK Tablestore untuk Java V3.5.9 digunakan. Tambahkan konten berikut ke <dependencies>:

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.9</version>
    </dependency>

Langkah 3: Pemetaan bidang SQL

  1. Buat Java Bean yang berisi variabel anggota dengan nama yang sama dengan nama bidang dalam tabel data. Dalam contoh ini, trip_id adalah satu-satunya kolom kunci utama dalam tabel data.

    Penting

    Saat membuat Java Bean, pastikan nama variabel anggota dalam Java Bean sama dengan nama bidang dalam 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;
    
        // Tambahkan metode yang digunakan untuk menentukan nama bidang dan mengembalikan nilai bidang.
        // Dalam contoh ini, bidang trip_id digunakan. Anda dapat menambahkan metode yang digunakan untuk menentukan nama bidang dan mengembalikan nilai bidang untuk bidang lainnya dengan cara serupa berdasarkan kebutuhan bisnis Anda.
        public void setTrip_Id(Long trip_id){
            this.trip_id =trip_id
        }
        public Long getTrip_Id() {
            return trip_id;
        }
    }
  2. Buat file konfigurasi pemetaan tempat kondisi kueri didefinisikan. Contoh kode berikut menunjukkan cara membuat file konfigurasi pemetaan bernama TripMapper.xml di direktori mybatis.

    Untuk informasi tentang fitur SQL yang didukung, lihat Fitur SQL.

    <?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 digunakan untuk membuat sesi MyBatis. Anda dapat menggunakan sesi MyBatis untuk menghubungkan klien ke Tablestore.

  1. Tambahkan konten berikut ke file konfigurasi MyBatis bernama mybatis-config.xml. Modifikasi item konfigurasi dalam file konfigurasi berdasarkan kebutuhan bisnis 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"/>
                <!-- Tentukan jenis sumber data. Untuk keluar dari proses, Anda harus mematikan driver JDBC untuk Tablestore. Pilih jenis sumber data yang sesuai dengan kebutuhan Anda. -->
                <!-- Jika Anda ingin program tetap berjalan setelah kueri data, Anda dapat mengatur jenis sumber data menjadi POOLED untuk mempertahankan kumpulan koneksi. Jika Anda ingin program keluar setelah kueri data, Anda hanya dapat mengatur jenis sumber data menjadi UNPOOLED. -->    
                <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>
            <!-- Tentukan jalur file konfigurasi pemetaan. -->
            <mapper resource="mybatis/TripMapper.xml"/>
        </mappers>
    </configuration>

    Tabel berikut menjelaskan item yang harus Anda konfigurasikan dalam file konfigurasi MyBatis.

    Item konfigurasi

    Tipe

    Diperlukan

    Contoh

    Deskripsi

    driver

    class

    Ya

    com.alicloud.openservices.tablestore.jdbc.OTSDriver

    Nama kelas untuk driver JDBC untuk Tablestore. Atur item konfigurasi ini ke com.alicloud.openservices.tablestore.jdbc.OTSDriver.

    url

    string

    Ya

    jdbc:ots:https://myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance

    Titik akhir instance. Nilai harus dalam format berikut: jdbc:ots:endpoint/instanceName. endpoint menunjukkan titik akhir instance. Untuk informasi lebih lanjut, lihat Titik akhir. instanceName menunjukkan nama instance. Ganti instanceName dengan nama instance sebenarnya.

    Saat menentukan nilai untuk item konfigurasi ini, awalan jdbc:ots: harus disertakan dalam nilai.

    username

    string

    Ya

    ************************

    ID AccessKey akun Alibaba Cloud Anda atau pengguna RAM.

    password

    string

    Ya

    ********************************

    Rahasia AccessKey akun Alibaba Cloud Anda atau pengguna RAM.

  2. 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: Buat SqlSession untuk menanyakan data

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();

Kode sampel lengkap

Kode sampel berikut menunjukkan cara menanyakan baris di mana nilai kolom kunci utama adalah 99 dan mengembalikan kolom tertentu dari baris tersebut:

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 {
        // Tentukan jalur file konfigurasi MyBatis.
        String resource = "mybatis/mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // Tablestore tidak mendukung transaksi. Oleh karena itu, Anda harus mengatur parameter yang menentukan apakah akan mengonfirmasi konfigurasi secara otomatis ke true.
        SqlSession session = sqlSessionFactory.openSession(true);
        // Masukkan pengenal pernyataan SELECT yang ingin Anda jalankan dan atur nilai kunci utama menjadi 99.
        // Pengenal pernyataan SELECT harus dalam format berikut: Jalur file konfigurasi pemetaan.ID pernyataan SELECT yang ingin Anda jalankan. Dalam contoh ini, mybatis.TripMapper.selectTrip menunjukkan bahwa pernyataan SELECT yang ID-nya adalah selectTrip dalam file TripMapper.xml pada node mybatis dijalankan.
        Trip trip = (Trip) session.selectOne("mybatis.TripMapper.selectTrip", 99L);
        // Tampilkan nilai kolom yang ingin Anda peroleh.
        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();
    }
}

Referensi