MyBatis小插曲:# { } 和 $ { } 的区别
创始人
2025-05-29 00:57:36

在使用mybatis的时候我们会使用到 # { } 和 $ { } 这两个符号来为sql语句传参数

而这两个 符号有什么区别呢?

  • #{ } :是预编译处理,是占位符

  • ${ }:是字符串替换,是拼接符

日志分析:

我们通过打印日志进行观察:

使用#{}的情况:

使用${}的情况:

在这里我们可以观察到 使用#{}的时候是先使用? 进行占位,然后调用PreparedStatement来赋值。

而使用${}的时候是直接进行替换操作

实践场景区别:

因此我们得出经验的结论

  • 当传值是Integer的时候,都可以使用

  • 当传值为 String类型,只能使用#{ } ,因为直接替换的不会给加上 " ",而导致sql语句错误

  • 当传值含有mysql的关键字,只能使用 ${ } ,因为另一种会误认为是字符串

// 1.传值是Integer的时候,都可以使用
// 2.传值为 String类型,只能使用#{ }
// 3.当传值为关键字,只能使用 ${ }

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
重庆属于哪个省份的 重庆在中国... 重庆有多大,大到超出我们的想象,重庆作为我国4个直辖市之一,印象里应该跟京津沪面积差不多,可事实上却...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...