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

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

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

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

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

日志分析:

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

使用#{}的情况:

使用${}的情况:

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

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

实践场景区别:

因此我们得出经验的结论

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

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

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

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

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
玛雅人的五大预言 玛雅人预言2... 曾经玛雅人预言2012年是世界末日,但当时好像没有发生什么。没想到10年后的2022年,疫情,战争,...
cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...