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.
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
-
Créez un Java Bean correspondant aux colonnes de la table de données. Dans cet exemple,
trip_idest la clé primaire de la table de données.ImportantLes 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; } } -
Créez un fichier de configuration de mappage et définissez les conditions de requête. Créez le fichier
TripMapper.xmldans le répertoiremybatisavec 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.
-
Créez le fichier de configuration MyBatis
mybatis-config.xmlavec 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. Remplacezendpointpar l'adresse de service de votre instance etinstanceNamepar 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.
-
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();
}
}