开发者社区> 问答> 正文

mybatis 将id列表当成字符串传进去,查出来的数据都是0

已解决

<select id=" parameterType="java.lang.String" resultType="java.lang.Integer">
    select count(1) total from user where deleted = 0
    and id in (#{uids})
</select>

展开
收起
星尘linger 2019-11-09 15:53:08 1239 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    你传Sring类型的话,参数就是 "100000,100001,100002,100003,100004" , 你把这个作为参数直接传到sql解析是
    l_type_id IN('100000,100001,100002,100003,100004') 把所有的值都包在一个字符串里面了所以数据库里面该字段值匹配不上, 可以把String参数分割装数据 mybatis 里面用 标签遍历传参。

    因为你传的是一个整串,通过占位符#{},你传的什么就是解析的什么,对于sql来说这个条件就是 一个字符串,并不是每个单个的参数值,所以值包在一个字符串中,自然就匹配不到值了。

    答案

    <select id=" parameterType="list" resultType="java.lang.Integer">
        select count(1) total from user where deleted = 0
        and id in
        <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> 
          #{item} 
        </foreach> 
    </select>
    
    
    2019-11-09 15:53:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载