目前支持使用SQL查询功能的地域有华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、德国(法兰克福)、美国(弗吉尼亚)、印度(孟买)和新加坡。
如果要使用RAM用户进行操作,请确保已创建RAM用户,并为RAM用户授予所有SQL操作权限,即在自定义权限策略中配置
"Action": "ots:SQL*"
。具体操作,请参见
配置RAM用户权限
。
已获取AccessKey(包括AccessKey ID和AccessKey Secret)。具体操作,请参见
获取AccessKey
。
已创建数据表并为数据表创建映射关系。具体操作,请分别参见
创建数据表
和
创建表的映射关系
。
在Maven项目中加入依赖项
在Maven工程中使用表格存储JDBC驱动,只需在pom.xml中加入相应依赖即可。以5.13.5版本为例,在<dependencies>内加入如下内容:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>tablestore-jdbc</artifactId>
<version>5.13.5</version>
</dependency>
下载MyBatis安装包(即mybatis-x.x.x.jar)并导入到项目中。具体下载路径请参见
MyBatis安装包
。
mybatis-x.x.x.jar中的
x.x.x
表示MyBatis的版本号,请根据实际下载所需版本的安装包。
在Maven项目中加入依赖项
在Maven工程中使用MyBatis,只需在pom.xml中加入相应依赖即可。以3.6.3.Final版本为例,在<dependencies>内加入如下内容:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
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;
// ...
创建映射配置文件,并在映射配置文件中定义查询条件。此处以在mybatis目录下创建TripMapper.xml为例介绍。
关于SQL功能支持情况,请参见
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>
步骤四:构建SqlSessionFactory
SqlSessionFactory用于创建MyBatis会话,通过MyBatis会话,可以实现客户端与表格存储之间的连接。
创建MyBatis配置文件mybatis-config.xml后添加如下内容。并根据实际修改对应配置项。
<?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"/>
<!-- 设置数据源类型。由于表格存储JDBC驱动需要主动关闭后才能让进程退出,请根据实际使用选择合适的数据源类型。-->
<!-- 如果程序常驻执行,则您可以使用POOLED维护一个连接池;如果希望程序完成数据查询后退出,则只能使用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>
<!-- 设置为映射配置文件的路径。-->
<mapper resource="mybatis/TripMapper.xml"/>
</mappers>
</configuration>
配置项说明请参见下表。
com.alicloud.openservices.tablestore.jdbc.OTSDriver
表格存储JDBC驱动的类名,设置为com.alicloud.openservices.tablestore.jdbc.OTSDriver。
string
jdbc:ots:https://myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance
实例访问地址。格式为
jdbc:ots:endpoint/instanceName
,其中endpoint为实例的服务地址。更多信息,请参见
服务地址
。instanceName为实例名称,请根据实际修改。
填写时必须加上前缀
jdbc:ots:
。
通过加载MyBatis配置文件来构建SqlSessionFactory。
String resource = "mybatis/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
步骤五:创建SqlSession查询数据
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();
查询表中主键列值为99的行数据,并获取指定列的值。
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 {
// 设置MyBatis配置文件的
String resource = "mybatis/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 由于表格存储目前暂不支持事务,因此是否自动提交配置必须设置为true。
SqlSession session = sqlSessionFactory.openSession(true);
// 填写要执行的SELECT语句对应的标识并设置主键值为99。
// SELECT语句对应的标识格式为“映射配置文件路径.SELECT语句id”,示例中mybatis.TripMapper.selectTrip表示执行mybatis节点下TripMapper.xml文件内id为selectTrip的SELECT语句。
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();