Integre o driver JDBC do Tablestore ao MyBatis, um framework de persistência Java, para executar consultas SQL no Tablestore em seus projetos Java. Para mais informações, consulte MyBatis.
Pré-requisitos
Um par de AccessKey de um usuário RAM com a permissão
"Action": "ots:SQL*"Uma tabela de dados e uma tabela de mapeamento (consulte Operações DDL)
Procedimento
Para integrar o MyBatis ao driver JDBC do Tablestore, siga as etapas abaixo.
O driver JDBC do Tablestore inclui pool de conexões integrado. Para evitar problemas de compatibilidade, não use ferramentas externas de pool de conexões.
Etapa 1: Instale o driver JDBC
O driver JDBC está disponível via Maven ou instalação manual.
Adicionar uma dependência Maven
Para usar o driver JDBC do Tablestore em um projeto Maven, adicione a seguinte dependência ao elemento <dependencies> no arquivo pom.xml. Este exemplo usa a versão 5.17.0:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>tablestore-jdbc</artifactId>
<version>5.17.0</version>
</dependency>
Instalação manual
Baixe o driver JDBC do Tablestore e importe-o para seu projeto.
Etapa 2: Instale o MyBatis
O MyBatis está disponível via Maven ou instalação manual.
Adicionar uma dependência Maven
Para usar o MyBatis em um projeto Maven, adicione a seguinte dependência ao elemento <dependencies> no arquivo pom.xml. Este exemplo usa a versão 3.5.9:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
Instalação manual
Baixe o pacote do MyBatis e importe-o para seu projeto.
Etapa 3: Mapear campos SQL
-
Crie um Java Bean para as colunas da tabela de dados. Neste exemplo, trip_id é a chave primária da tabela.
ImportanteOs nomes das variáveis membro do Java Bean devem corresponder aos nomes das colunas da tabela de dados.
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; } } -
Crie um arquivo de configuração de mapeamento e defina as condições de consulta. Crie o arquivo TripMapper.xml no diretório mybatis com o seguinte conteúdo:
<?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>
Etapa 4: Construir o SqlSessionFactory
O SqlSessionFactory cria sessões do MyBatis conectadas ao Tablestore.
-
Crie o arquivo de configuração do MyBatis mybatis-config.xml com o conteúdo abaixo. Substitua os espaços reservados pelos valores reais.
<?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>Parâmetro
Tipo
Obrigatório
Descrição
driver
classe
Sim
Nome da classe do driver JDBC do Tablestore. Defina como
com.alicloud.openservices.tablestore.jdbc.OTSDriver.url
string
Sim
Endpoint da instância no formato
jdbc:ots:endpoint/instanceName. Substituaendpointpelo endereço de serviço da instância einstanceNamepelo nome da instância.username
string
Sim
AccessKey ID da conta Alibaba Cloud ou do usuário RAM.
password
string
Sim
AccessKey secret da conta Alibaba Cloud ou do usuário RAM.
-
Carregue o arquivo de configuração do MyBatis para construir o SqlSessionFactory.
String resource = "mybatis/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
Etapa 5: Consultar dados com SqlSession
O Tablestore não suporta transações. Defina o parâmetro autoCommit do método openSession como 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();
Exemplo completo
O exemplo a seguir consulta a linha com valor de chave primária 99 e recupera os valores de colunas específicas.
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();
}
}