方法1:順次パラメータ送信
1. @paramアノテーションなしで複数のパラメータを渡す
注:jdk1.7で得られるものは:[1、0、param1、param2]
1.8で得られるものは:[arg1、arg0、param1、param2]
#{}内の数字は、受信パラメーターの順序を表します。
この方法はお勧めできません。SQLレイヤー式は直感的ではなく、シーケンスを調整すると、間違いを犯しやすくなります。
栗を与える:
Daoレイヤー
List<User> demo(int userid, String name);
対応するXML書き込み
jdk1.7
<select id="demo" resultMap="User">
select *
from user where user_id=#{0} and name= #{1}
</select>
jdk1.8以降
最初の書き方
<select id="demo" resultMap="User">
select *
from user where user_id=#{arg0} and name= #{arg1}
</select>
第二の書き方
<select id="demo" resultMap="User">
select *
from user where user_id=#{param0} and name= #{param1}
</select>
方法2:@Param注解传パラメータメソッド
public User selectUser(@Param("userName") String name, int @Param("deptId") deptId);
<select id="selectUser" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
#{}内の名前は、アノテーション@Paramブラケットで変更された名前に対応しています。
この方法は、パラメータが少ない場合は比較的直感的であり、推奨されています。
方法3:マップパスメソッド
public User selectUser(Map<String, Object> params);
<select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
#{}の名前は、マップのキー名に対応しています。
このメソッドは、複数のパラメーターを渡すのに適しており、パラメーターを柔軟に渡すことができます。
方法4:Java Beanのパラメーター渡しメソッド
public User selectUser(Map<String, Object> params);
<select id="selectUser" parameterType="com.test.User" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
#{}内の名前は、Userクラスのメンバー属性に対応しています。
この方法は非常に直感的ですが、エンティティクラスを構築する必要があり、展開するのは簡単ではなく、状況に応じて属性を追加する必要があります。