当前位置: 首页 > 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参数化传值,保留原始字符串类型。
http://www.xdnf.cn/news/192907.html

相关文章:

  • npm init、换源问题踩坑
  • 【Python数据驱动决策】数据分析与可视化全流程实战指南
  • 论文导读 - 基于边缘计算、集成学习与传感器集群的便携式电子鼻系统
  • Vue基础(7)_计算属性
  • C++核心编程:类与对象全面解析
  • Infrared Finance:Berachain 生态的流动性支柱
  • 车载软件架构 --- AUTOSAR的方法论
  • SwiftUI 8.List介绍和使用
  • 零基础制作Freertos智能小车(教程非常简易)持续更新中....
  • DeepSeek创始人梁文峰是个什么样的人?
  • LLM - Large Language Model
  • Android Studio 中使用 SQLite 数据库开发完整指南(Kotlin版本)
  • Redis最佳实践
  • nginx代理websocket时ws遇到仅支持域名访问的处理
  • 23种设计模式 -- 工厂模式
  • 算力困局:AI 狂飙背后的能源枷锁与破局之道
  • 后端[特殊字符][特殊字符]看前端之Row与Col
  • 1.9多元函数积分学
  • Day15(贪心算法)——LeetCode121.买卖股票的最佳时机55.跳跃游戏
  • 【计网】计算机网络的类别与性能
  • Rust 学习笔记:修复所有权常见错误
  • cookie和session
  • Flink Checkpoint 与实时任务高可用保障机制实战
  • DBeaver详细安装步骤
  • 【AI】【MCP】搭建私人王炸MCP自动化工作流
  • 微信jdk 前端vue获取流程1、
  • 泰迪杯实战案例超深度解析:特殊医学用途配方食品数据分析与智能推荐系统设计
  • 《Linux篇》基础开发工具——vim详细介绍
  • 使用手机录制rosbag包
  • 21.气体放电管的特性与使用注意事项