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を提供している。