Mybatisで置換変数を使用する方法

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で置換変数を使用してクエリを柔軟に構築することができます。