美文网首页
mybatis使用in时只查询出第一值的结果问题解决

mybatis使用in时只查询出第一值的结果问题解决

作者: 春苟哈皮 | 来源:发表于2019-03-12 17:52 被阅读0次

使用mybatis时,尽管mybatis提供了foreach操作来帮我们循环list,但是在in的时候,尽可能的在代码中将list的所有值转为以,逗号分割的字符串,避免mybatis自己解析,提高效率。
但是这里有一个问题需要注意下:

    <select id="queryByMap" resultMap="ListResultMap">
        select * from user where id in (#{ids})
    </select>

使用这个sql,由于#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,所以sql在执行时会出现这种效果:
select * from user where id in ('12,23,34')
这种sql执行出来之后,只会去查询12这一条结果。

改用${}后,就可以避免这种问题。$是将传入的数据直接显示生成在sql中

    <select id="queryByMap" resultMap="ListResultMap">
        select * from user where id in (${ids})
    </select>

执行sql:
select * from user where id in (12,23,34)

相关文章

网友评论

      本文标题:mybatis使用in时只查询出第一值的结果问题解决

      本文链接:https://www.haomeiwen.com/subject/xwgnpqtx.html