关于Mybatis参数传值问题(常用) 个人比较推荐第二种哦,可以减少代码量,唯一要注意的是自己传递的参数个数个顺序就好

 第一种方式:注解也是开发中最常见的一种方式(明显看出自己所传递的参数,)

  DAO类中的方法函数

  Public User selectUser(@param("userName")Stringname,@param("userArea")String area); 

  对应的Mapper.xml语句

  <select id=" selectUser" resultMap="BaseResultMap"> 
    select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR} 
  </select>

  也可以是这样

  <select id=" selectUser" resultMap="BaseResultMap"> 
    select * from user_user_t where user_name = #{userName} and user_area=#{userArea} 
  </select>

  根据你所拥有的Mybatis版本而去 老版本需要添加参数类型

 第二种方式:多个参数传值(索引方式)(简便,减少代码量)

   DAO类中的方法函数

  public List<XXXBean> getXXXBeanList(String xxId, String xxCode);  

  对应Mapper.xml语句      <select id="getXXXBeanList" resultType="XXBean">     select t.* from tableName where id = #{0} and name = #{1}   </select>
  由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始


第三种方式:Map封装多参数
   DAO类中的方法函数 
   public List<XXXBean> getXXXBeanList(HashMap map);
   对应Mapper.xml语句   
<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">     
     select 字段... from XXX where id=#{xxId} code = #{xxCode}    
   </select>   

其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。


第四种方式:List封装in
      DAO类中的方法函数
  public List<XXXBean> getXXXBeanList(List<String> list);  
     对应的Mapper.xml文件
  <select id="getXXXBeanList" resultType="XXBean">     select 字段... from XXX where id in     <foreach item="item" index="index" collection="list" open="(" separator="," close=")">       #{item}     </foreach>   </select>   foreach 最后的效果是select 字段... from XXX where id in ('1','2','3','4')





原文地址:https://www.cnblogs.com/mingqi/p/6495524.html