第一种:
Dao层的方法
public User selectUser(String name,String password);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap"> select * from t_user where user_name = #{0} and user_password=#{1} </select>
第二种:
该方法采用Map传多参数
Dao层的方法
public User selectUser(Map paramMap);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap"> select * from t_user where user_name = #{userName,jdbcType=VARCHAR} and user_password=#{userPassword,jdbcType=VARCHAR} </select>
Service层调用
public User xxxSelectUser(){ Map paramMap=new hashMap(); paramMap.put("userName","对应具体的参数值"); paramMap.put("userPassword","对应具体的参数值"); User user=xxx.selectUser(paramMap); }
个人认为此方法不够直观,见到接口方法不能直接的知道要传的参数是什么。
第三种:@Param注解
Dao层的方法
public User selectUser(@Param("name")String name, @Param("password")String password);
对应的Mapper.xml
<select id=" selectUser" resultMap="BaseResultMap"> select * from t_user where user_name = #{name,jdbcType=VARCHAR} and user_password=#{password,jdbcType=VARCHAR} </select>
个人觉得三种之中这种可读性最好,建议双引号中的值和变量名保持一致。
第一种占位符不够直观!