关于mybatis的传参问题

原创 2016年06月01日 12:00:13

问题描述:mybatis中写sql时,用到 id in(#{s})这样的语句,传参数时直接传的String s = "12,34,45",传入之后,执行sql,发现结果只找出了第一个数即12的记录,34,45的记录被过滤了。

类似这一种用到in()的语句,传参时正确的写法应该如下:

方法一: 传入list

findByIds(List<Long> ids)
       1.1 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list

       Xml代码  收藏代码
  1. <select id="findByIdsMap" resultMap="BaseResultMap">  
  2.  Select  
  3.  <include refid="Base_Column_List" />  
  4.  from jria where ID in  
  5.  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
  6.   #{item}  
  7.  </foreach>  
  8. </select> 

 

方法二:传入数组

findByIds(Long[] ids)
     1.2 如果参数的类型是Array,则在使用时,collection属性要必须指定为 array

     Xml代码  收藏代码
  1. <select id="findByIdsMap" resultMap="BaseResultMap">  
  2. select  
  3. <include refid="Base_Column_List" />  
  4. from tabs where ID in  
  5. <foreach item="item" index="index" collection="array" open="(" separator="," close=")">  
  6.  #{item}  
  7. </foreach>  
  8. </select> 

 

 

方法三:将sql语句中的#{s}写法改为${s}

这种错误,当参数s只有一个数时,结果是正确的,所以如果没有多个值,就很难发现问题的潜在问题,希望大家以后注意这样的错误。

关于JSP页面间的传参问题

  • 2009年09月22日 21:18
  • 2KB
  • 下载

Mybatis中#{}和${}传参的区别及#和$的区别小结

最近在用mybatis,之前用过ibatis,总体来说差不多,不过还是遇到了不少问题,再次记录下, 比如说用#{},和 ${}传参的区别, 使用#传入参数是,sql语句解析是会加上"",比...

多action之间跳转传参问题

  • 2012年10月28日 18:39
  • 3.19MB
  • 下载

Delphi主程序与Dll传参问题

  • 2008年10月28日 14:49
  • 98KB
  • 下载

MyBatis传参方式和批量操作总结

最近刚开发完一个项目,用了MyBatis作为数据库持久。今天分析总结一下使用的心得。     Mybatis是一个半自动化的数据持久组件。和之前接触的Hibernate有很大的区别。Hibernat...

分页插件传参问题

  • 2013年04月19日 09:03
  • 441B
  • 下载

Mybatis框架之map传参

之前写项目的时候就会遇到一次传好多的值,如果封装成一个实体(或者Model)的话还好,但是总会有都不满足的情况,这个时候map传参的话就大大解决了我们这个问题。因为大家都知道map是一对键值对,而且它...

Delphi主程序与Dll传参问题1.0

  • 2008年10月28日 22:17
  • 103KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于mybatis的传参问题
举报原因:
原因补充:

(最多只允许输入30个字)