第1种:Dao层的mapper接口方法
public selectUserByNameAndAge(String name,String age);
对应的XML,#{0}代表接收到的是Dao层的第一个参数,#{1}代表Dao层中第二个参数,更多参数一致往后加即可。
<select id="selectUserByNameAndAge" resultMap="baseResultMap">
select * from user where user_name = #{0} and user_age=#{1}
</select>
第2种:使用@param注解
public interface UserMapper{
User selectUser(@param("username") String username,@param("password") String password);
}
然后,在XML映射文件像下面这样使用(推荐封装为一个map,作为单个参数传递给mapper映射文件):
<select id="selectUser" resultType="com.wsd.domain.User">
select id,username,password from user where username=#{username} and password=#{password}
</select>
第3种:多个参数封装成map
try{
// 映射文件的命名空间SQL片段的ID,就可以调用对应的映射文件中的SQL
// 由于我们的参数超过了两个,而方法中只有一个Object参数收集,因此,我们使用Map集合来装载我们的参数
Map<String,Object> map = new HashMap();
map.put("username",username);
map.put("password",password);
return sqlSession.selectUser(map);
} catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
throw e;
} finally{
MyBatisUtil.closeSqlSession();
}