Tous les produits
Search
Centre de documentation

Tablestore:Use MyBatis to query data with SQL

Dernière mise à jour :Aug 08, 2026

Intégrez le pilote JDBC de Tablestore à MyBatis, un framework de persistance Java, pour exécuter des requêtes SQL sur Tablestore depuis vos projets Java. Pour plus d'informations, consultez la documentation MyBatis.

Prérequis

  • Une paire de clés AccessKey associée à un utilisateur RAM disposant de l'autorisation "Action": "ots:SQL*"

  • Une table de données et une table de mappage (consultez les opérations DDL)

Procédure

Pour intégrer MyBatis au pilote JDBC de Tablestore, procédez comme suit.

Important

Le pilote JDBC de Tablestore intègre nativement un pool de connexions. Pour éviter tout problème de compatibilité, n'utilisez pas d'outils externes de gestion de pools de connexions.

Étape 1 : Installer le pilote JDBC

Installez le pilote JDBC via Maven ou manuellement.

Ajouter une dépendance Maven

Pour utiliser le pilote JDBC de Tablestore dans un projet Maven, ajoutez la dépendance suivante à l'élément <dependencies> de votre fichier pom.xml. Cet exemple utilise la version 5.17.0 :

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

Installation manuelle

Téléchargez le pilote JDBC de Tablestore et importez-le dans votre projet.

Étape 2 : Installer MyBatis

Installez MyBatis via Maven ou manuellement.

Ajouter une dépendance Maven

Pour utiliser MyBatis dans un projet Maven, ajoutez la dépendance suivante à l'élément <dependencies> de votre fichier pom.xml. Cet exemple utilise la version 3.5.9 :

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

Installation manuelle

Téléchargez le package MyBatis et importez-le dans votre projet.

Étape 3 : Mapper les champs SQL

  1. Créez un Java Bean correspondant aux colonnes de la table de données. Dans cet exemple, trip_id est la clé primaire de la table de données.

    Important

    Les noms des variables membres du Java Bean doivent correspondre exactement aux noms des colonnes de la table de données.

    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;
    
        // The following example uses trip_id. Other fields follow the same pattern.
        public void setTrip_Id(Long trip_id){
            this.trip_id = trip_id;
        }
        public Long getTrip_Id() {
            return trip_id;
        }
    }
  2. Créez un fichier de configuration de mappage et définissez les conditions de requête. Créez le fichier TripMapper.xml dans le répertoire mybatis avec le contenu suivant :

    <?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>

Étape 4 : Construire SqlSessionFactory

SqlSessionFactory crée des sessions MyBatis qui se connectent à Tablestore.

  1. Créez le fichier de configuration MyBatis mybatis-config.xml avec le contenu suivant. Remplacez les espaces réservés par vos valeurs réelles.

    <?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"/>
                <!-- The Tablestore JDBC driver requires explicit closure to exit the process. Use POOLED for long-running applications or UNPOOLED for one-time queries. -->
                <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>
            <!-- Set to the path of your mapping configuration file. -->
            <mapper resource="mybatis/TripMapper.xml"/>
        </mappers>
    </configuration>

    Paramètre

    Type

    Obligatoire

    Description

    driver

    class

    Oui

    Nom de classe du pilote JDBC de Tablestore. Définissez cette valeur sur com.alicloud.openservices.tablestore.jdbc.OTSDriver.

    url

    string

    Oui

    Endpoint de l'instance au format jdbc:ots:endpoint/instanceName. Remplacez endpoint par l'adresse de service de votre instance et instanceName par le nom de votre instance.

    username

    string

    Oui

    ID AccessKey de votre compte Alibaba Cloud ou de votre utilisateur RAM.

    password

    string

    Oui

    Secret AccessKey de votre compte Alibaba Cloud ou de votre utilisateur RAM.

  2. Chargez le fichier de configuration MyBatis pour construire SqlSessionFactory.

    String resource = "mybatis/mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

Étape 5 : Interroger les données avec SqlSession

Tablestore ne prenant pas en charge les transactions, définissez le paramètre autoCommit de openSession sur 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();

Exemple complet

L'exemple suivant interroge la ligne dont la valeur de clé primaire est 99 et récupère les valeurs de certaines colonnes.

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 does not support transactions. Set autoCommit to 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();
    }
}