すべてのプロダクト
Search
ドキュメントセンター

Tablestore:SQLステートメントを実行してデータをクエリするためにMyBatisを使用する

最終更新日:Dec 28, 2024

MyBatisは、カスタムSQLステートメント、ストアドプロシージャ、および高度なマッピングをサポートするJavaの永続性フレームワークです。MyBatisを使用して、Tablestore用のJava Database Connectivity(JDBC)ドライバを使用してTablestoreにアクセスできます。

背景情報

MyBatisは、カスタムSQLステートメント、ストアドプロシージャ、および高度なマッピングをサポートするJavaの永続性フレームワークです。MyBatisを使用すると、JDBCコードを使用したり、パラメータを手動で設定したり、結果セットを取得したりする必要がなくなります。詳細については、MyBatisドキュメントを参照してください。

注意事項

  • SQLクエリ機能は、中国(杭州)、中国(上海)、中国(北京)、中国(張家口)、中国(ウランチャブ)、中国(深セン)、中国(成都)、中国(香港)、日本(東京)、シンガポール、マレーシア(クアラルンプール)、英国(ロンドン)、米国(シリコンバレー)、インドネシア(ジャカルタ)、ドイツ(フランクフルト)、SAU(リヤド - パートナーリージョン)、および米国(バージニア)の各リージョンでご利用いただけます。

  • Tablestore用JDBCドライバには、組み込みの接続プールがあります。そのため、非互換性やその他の不明な要因によって発生する問題を防ぐために、外部データベースの接続プールを使用しないことをお勧めします。

前提条件

手順

手順1:JDBCドライバをインストールする

JDBCドライバは、次のいずれかの方法でインストールできます。

  • Tablestore用JDBCドライバをダウンロードし、プロジェクトにインポートします。ダウンロードパスについては、Tablestore用JDBCドライバを参照してください。

  • Mavenプロジェクトに依存関係を追加します。

    MavenでTablestore用JDBCドライバを使用するには、対応する依存関係をpom.xmlファイルに追加するだけです。この例では、JDBCドライバ5.17.0を使用しています。<dependencies>に次のコンテンツを追加します。

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

手順2:MyBatisをインストールする

MyBatisは、次のいずれかの方法でインストールできます。

  • MyBatisインストールパッケージmybatis-x.x.x.jarをダウンロードし、プロジェクトにインポートします。ダウンロードパスについては、MyBatisインストールパッケージを参照してください。

    mybatis-x.x.x.jarでは、x.x.xはMyBatisのバージョン番号を示します。ビジネス要件に基づいてMyBatisインストールパッケージを選択してください。

  • Mavenプロジェクトに依存関係を追加します。

    MavenでMyBatisを使用するには、対応する依存関係をpom.xmlファイルに追加するだけです。この例では、Java V3.5.9用Tablestore SDKを使用しています。<dependencies>に次のコンテンツを追加します。

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

手順3:SQLフィールドをマッピングする

  1. データテーブルのフィールド名と同じ名前のメンバー変数を含むJava Beanを作成します。この例では、trip_idはデータテーブルの唯一のプライマリキー列です。

    重要

    Java Beanを作成するときは、Java Beanのメンバー変数の名前がデータテーブルのフィールド名と同じであることを確認してください。

    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;
    
        // フィールド名を指定し、フィールド値を返すために使用されるメソッドを追加します。
        // この例では、trip_idフィールドを使用しています。ビジネス要件に基づいて、同様の方法で他のフィールドのフィールド名を指定し、フィールド値を返すために使用されるメソッドを追加できます。
        public void setTrip_Id(Long trip_id){
            this.trip_id =trip_id;
        }
        public Long getTrip_Id() {
            return trip_id;
        }
    }
  2. クエリ条件が定義されているマッピング設定ファイルを作成します。次のサンプルコードは、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>

手順4:SqlSessionFactoryを構築する

SqlSessionFactoryは、MyBatisセッションを作成するために使用されます。MyBatisセッションを使用して、クライアントをTablestoreに接続できます。

  1. mybatis-config.xmlという名前のMyBatis設定ファイルに次のコンテンツを追加します。ビジネス要件に基づいて、設定ファイルの設定項目を変更します。

    <?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"/>
                <!-- データソースのタイプを指定します。プロセスを終了するには、Tablestore用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>

    次の表は、MyBatis設定ファイルで設定する必要がある項目について説明しています。

    設定項目

    タイプ

    必須

    説明

    driver

    class

    はい

    com.alicloud.openservices.tablestore.jdbc.OTSDriver

    Tablestore用JDBCドライバのクラスの名前。この設定項目をcom.alicloud.openservices.tablestore.jdbc.OTSDriverに設定します。

    url

    string

    はい

    jdbc:ots:https://myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance

    インスタンスのエンドポイント。値はjdbc:ots:endpoint/instanceNameの形式である必要があります。endpointはインスタンスのエンドポイントを示します。詳細については、エンドポイントを参照してください。instanceNameはインスタンスの名前を示します。instanceNameを実際のインスタンス名に置き換えます。

    この設定項目の値を指定するときは、値にjdbc:ots:プレフィックスを含める必要があります。

    username

    string

    はい

    ************************

    Alibaba CloudアカウントまたはRAMユーザーのAccessKey ID。

    password

    string

    はい

    ********************************

    Alibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。

  2. MyBatis設定ファイルをロードして、SqlSessionFactoryを構築します。

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

手順5: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);
        // Tablestoreはトランザクションをサポートしていません。そのため、設定を自動的にコミットするかどうかを指定するパラメータを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();
    }
}

関連情報