MyBatisで複数のパラメータを渡す方法は何ですか?
MyBatisでは、複数のパラメータを渡すためのさまざまな方法があります。
- Mapを使用したり、@Paramアノテーションを使用することで、複数のパラメータを1つのMapにまとめることができます。また、@Paramアノテーションを使用することで、各パラメータに名前を付けてSQL文中でその名前を使用できます。
たとえば、Mapを使用して複数のパラメーターを渡す方法:
Map<String, Object> params = new HashMap<>();
params.put("param1", value1);
params.put("param2", value2);
List<ResultType> result = sqlSession.selectList("namespace.statement", params);
複数のパラメータを渡すために@Paramアノテーションを使用することもできます。
List<ResultType> result = sqlSession.selectList("namespace.statement", @Param("param1") value1, @Param("param2") value2);
SQL文では、${param1}と${param2}を使用してパラメータを参照することができます。
- POJOオブジェクトを使用すると、複数のパラメータを1つのPOJOオブジェクトにカプセル化し、SQL文でPOJOのプロパティを直接参照できます。
例えば、POJOオブジェクトを定義する。
public class MyParams {
private String param1;
private String param2;
// getters and setters
}
その後、SQL文でPOJOの属性を参照します。
<select id="statement" parameterType="com.example.MyParams" resultType="com.example.ResultType">
SELECT * FROM table WHERE column1 = #{param1} AND column2 = #{param2}
</select>
呼び出し時に、複数のパラメータをPOJOオブジェクトにまとめて渡します。
MyParams params = new MyParams();
params.setParam1(value1);
params.setParam2(value2);
List<ResultType> result = sqlSession.selectList("namespace.statement", params);
これらの方法はすべて複数のパラメータの受け渡しを実現できますので、実際のシチュエーションに適する方法を選択してください。