Mybatisでプリミティブ型を扱う

Mybatisでプリミティブ型を扱う

MyBatisでプリミティブ型を扱う方法

MyBatisでは、プリミティブ型を簡単に扱うことができる。
プリミティブ型とは、Javaにおける基本的なデータ型で、intやlong、booleanなどが含まれる。
これらのデータ型は、MyBatisのマッパーインターフェースで直接使用することができる。

1. プリミティブ型を使った単純なクエリ

以下は、test_tableというテーブルからidに該当するレコードを取得する例である。
この例では、idはint型のプリミティブ型として扱われる。

public interface TestMapper {
    TestEntity selectById(int id);
}

上記のマッパーインターフェースに対応するselectタグのクエリは次の通り。

<select id="selectById" resultType="TestEntity">
    SELECT * FROM test_table WHERE id = #{id}
</select>

この場合、idはint型として直接マッパーインターフェースのメソッドに渡される。
MyBatisは自動的にこのプリミティブ型のidをSQLクエリにバインドする。

2. プリミティブ型の複数パラメータを使用する場合

複数のプリミティブ型パラメータを使用する場合、MyBatisは@Paramアノテーションを使ってパラメータ名を指定することができる。
以下は、test_tableからidとstatusに基づいてレコードを取得する例である。

public interface TestMapper {
    TestEntity selectByIdAndStatus(@Param("id") int id, @Param("status") int status);
}

対応するselectタグのクエリは以下のようになる。

<select id="selectByIdAndStatus" resultType="TestEntity">
    SELECT * FROM test_table WHERE id = #{id} AND status = #{status}
</select>

この例では、idとstatusの両方がint型のプリミティブ型としてマッパーインターフェースに渡され、MyBatisはそれぞれを適切にバインドしてクエリを実行する。

3. プリミティブ型のリストを使用する場合

プリミティブ型のリストをMyBatisで使用する場合は、foreachタグを利用することができる。
以下は、test_tableから複数のidに該当するレコードを取得する例である。

public interface TestMapper {
    List<TestEntity> selectByIds(@Param("ids") List<Integer> ids);
}

対応するselectタグのクエリは次のように記述する。

<select id="selectByIds" resultType="TestEntity">
    SELECT * FROM test_table WHERE id IN
    <foreach item="id" collection="ids" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>

この例では、idsはIntegerのリストとして渡され、それぞれのidがクエリにバインドされる。
foreachタグを使うことで、MyBatisはこのリストを適切に処理し、SQLクエリを生成する。

4. プリミティブ型の戻り値を使用する場合

プリミティブ型を戻り値として使用することもできる。
例えば、test_tableのレコード数をカウントする場合、以下のように定義できる。

public interface TestMapper {
    int countRecords();
}

対応するselectタグのクエリは次の通り。

<select id="countRecords" resultType="int">
    SELECT COUNT(*) FROM test_table
</select>

この例では、MyBatisはクエリ結果をint型として返す。

まとめ

MyBatisでは、プリミティブ型を非常に柔軟に扱うことができる。
マッパーインターフェースに直接プリミティブ型を使用することで、SQLクエリに簡単にバインドできる。
また、複数のプリミティブ型パラメータやリスト、プリミティブ型の戻り値を使用する場合でも、MyBatisはそれを適切に処理し、開発者にとって使いやすいAPIを提供している。