目前支持使用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();