Mybatisで置換変数を使用する方法
MyBatisで置換変数を使用する方法について説明します。
例として、test_userというテーブルと、testUserというクラス名を使用します。
1. SQLマッピングファイルの設定
SQLマッピングファイルで、変数を使用してクエリを動的に構築する方法を示します。
例: testUserMapper.xml
<mapper namespace="com.example.mapper.TestUserMapper"> <!-- 置換変数を使用したSELECTクエリ --> <select id="selectUserById" parameterType="int" resultType="com.example.model.TestUser"> SELECT * FROM test_user WHERE id = #{userId} </select> <!-- 条件に応じた動的SQL --> <select id="selectUsersByCondition" parameterType="map" resultType="com.example.model.TestUser"> SELECT * FROM test_user <where> <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </where> </select> </mapper>
2. マッパーインターフェースの定義
マッパーインターフェースで、SQLマッピングファイルで定義したメソッドを宣言します。
例: TestUserMapper.java
package com.example.mapper; import com.example.model.TestUser; import java.util.Map; import java.util.List; public interface TestUserMapper { TestUser selectUserById(int userId); List<TestUser> selectUsersByCondition(Map<String, Object> params); }
3. モデルクラスの定義
データベースのテーブルに対応するモデルクラスを定義します。
例: TestUser.java
package com.example.model; public class TestUser { private int id; private String name; private int age; // getters and setters public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
このようにして、MyBatisで置換変数を使用してクエリを柔軟に構築することができます。