当前位置: 首页 > news >正文

mybatis里in关键字拼接id问题

我们一般会把ids集合用StrUtil.join(‘,’)转成"1,2,3"这种形式 然后放入in中 我们会这么写:

select id, nick_name, icon from tb_user where id in (#{ids}) order by FIELD(id, #{ids})

结果发现sql执行是这样的:

select id, nick_name, icon from tb_user where id in ('1011, 1022') order by FIELD(id, '1011, 1022')

先上正确玩法✅:

<select id="findByIds" resultType="com.hmdp.dto.UserDTO">
   select id, nick_name, icon from tb_user where id in
     <foreach collection="ids" open="(" close=")" separator="," item="id">
        #{id}
     </foreach>
 order by FIELD(id,
    <foreach collection="ids" separator="," item="id">
        #{id}
    </foreach>
    )
</select>

现在说一下为什么会造成这种现象, 原因是mybatis为了防止sql注入而对字符串拼接的片段会在首尾两端添加一对引号 这样就不存在and 1=1永真了 即’1011, 1012’的来源 所以在xml里写sql遍历集合还是要用foreach标签✅

相关文章:

  • Java 时间处理:轻松掌握 java.time 包
  • 05-031-自考数据结构(20331)- 哈希表 - 例题分析
  • UE5学习记录part12
  • WebForms 事件
  • stm32第十天外部中断和NVIC讲解
  • 力扣刷题——排序链表
  • Lua语言脚本环境配置
  • 【uboot1】启动流程,环境变量,实例
  • Ubuntu上给AndroidStudio创建桌面图标
  • API 安全之认证鉴权
  • C++的指针数组、数组指针和指针数组指针
  • 怎么安装JSON服务器?JSON服务器最新安装教程
  • JavaScript中的模块化
  • GitHub Flow与GitLab Flow的详细
  • python求解常微分方程之Galerkin method:权函数
  • 【日期问题(判断星期几)】
  • 有哪些好用的项目管理工具推荐?并且支持AI定制和私有部署的?
  • 简单程序语言理论与编译技术·19 实现一个解释器
  • HTTP新的二进制格式与多路复用
  • 股指期货四个品种合约是什么意思?
  • 百度推广账号申请/seo必备软件
  • 五屏网站建设代理商/福州关键词排名优化
  • 湖北省疫情最新情况/外贸seo优化
  • 网站在线qq客服代码/怎么能在百度上做推广
  • 区域名 网站建设公司的销售好做吗/百度小程序
  • 如何做导购网站/关键词seo排名怎么做的