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

mybatis的xml ${item}总是更新失败

场景

代码如下

 void updateStatus(@Param("deviceSerialIdCollection") Collection<String> deviceSerialIdCollection, @Param("status") Integer status);<update id="updateStatus">UPDATE gb_monitor SET online=#{status} WHERE device_serial IN<foreach collection="deviceSerialIdCollection" index="idx" item="item" separator="," open="(" close=")">${item }</foreach></update>

打印SQL,发现参数不是String,
 

		UPDATEgb_monitor 
SETonline=1 
WHEREdevice_serial IN (44010200491320000001 , 44010200491320037168 , 44010200491320099664 , 44010200491320016436 );

结果发现,是 ${item}原因,改成#{item}就好了

MyBatis的${}#{}区别

  • ${item}(当前写法)
    直接拼接原始字符串到SQL中,不进行类型转换。若数据库字段定义为BIGINT,MySQL会尝试隐式转换字符串为数字
  • #{item}(推荐写法)
    会通过PreparedStatement参数化传值,保留原始字符串类型。

相关文章:

  • 【网络原理】TCP提升效率机制(三):延时应答和捎带应答
  • el-transfer穿梭框数据量过大的解决方案
  • 浏览器插件,提示:此扩展程序未遵循 Chrome 扩展程序的最佳实践,因此已无法再使用
  • 非标机械设备的动画制作
  • 如何通过Google Chrome增强网页内容的安全性
  • prompt提示词编写技巧
  • 【Pandas】pandas DataFrame rmod
  • Eureka 深度解析:从原理到部署的全场景实践
  • Spring生命周期
  • SNMP协议之详解(Detailed Explanation of SNMP Protocol)
  • 人工智能-深度学习之多层感知器
  • C++ 嵌套类 (详解 一站式讲解)
  • Flink Checkpoint 与实时任务高可用保障机制实战
  • SpeedyAutoLoot
  • Linux中的shell脚本练习
  • MCP之二_服务器与客户端实现
  • Python实例题:Pvthon实现键值数据库
  • 【计网】认识跨域,及其在go中通过注册CORS中间件解决跨域方案,go-zero、gin
  • 对VTK中的Volume Data体数据进行二维图像处理
  • 电子电器架构 ---电气/电子架构将在塑造未来出行方面发挥啥作用?
  • 当初没有珍惜巴特勒的热火,被横扫出局后才追悔莫及
  • 港交所与香港证监会就“中概股回流意向”已与部分相关企业进行接触
  • 暗蓝评《性别打结》丨拆解性别之结需要几步?
  • 呼伦贝尔市委常委、组织部长闫轶圣调任内蒙古交通集团党委副书记
  • 三位成功女性,如何应对失败
  • “90后”樊鑫履新乌兰察布市察右中旗副旗长人选