マッパーに複数の引数を渡すには
MyBatisでは、複数の引数は次のようにして渡すことができます。
- パラメータをオブジェクトとして使用:複数のパラメータを一つのオブジェクトにまとめ、オブジェクトをMyBatis のメソッドにパラメータとして渡すことができる。SQL 文では、オブジェクトのプロパティ名でパラメータ値にアクセスできる。
public class User {
private String name;
private int age;
// getters and setters
}
// MyBatis 接口方法
public User getUserByNameAndAge(User user);
SQL 文は XML 設定ファイルの中で次のように使用できます。
<select id="getUserByNameAndAge" parameterType="User" resultType="User">
SELECT * FROM users WHERE name=#{name} AND age=#{age}
</select>
- 本質的に
- 日本語ネイティブ表現として要約:
- @Param
// MyBatis 接口方法
public List<User> getUserByNameAndAge(@Param("name") String name, @Param("age") int age);
XML 設定ファイルの SQL ステートメントでは、このように使用します。
<select id="getUserByNameAndAge" resultType="User">
SELECT * FROM users WHERE name=#{name} AND age=#{age}
</select>
- パラメータにMapを利用する:複数の引数をMapにまとめて、MyBatisメソッドに引数として渡すことができる。Mapのキー名からSQL文中で対応するパラメータ値にアクセスできる。
// MyBatis 接口方法
public List<User> getUserByNameAndAge(Map<String, Object> params);
XMLの設定ファイルのSQL文においては、それらの使用法は以下の通りである。
<select id="getUserByNameAndAge" parameterType="java.util.Map" resultType="User">
SELECT * FROM users WHERE name=#{name} AND age=#{age}
</select>
MyBatis で複数のパラメータを渡す方法を以下に示します。状況に応じて適切な方法を選択してください。