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

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

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

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

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

日志分析:

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

使用#{}的情况:

使用${}的情况:

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

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

实践场景区别:

因此我们得出经验的结论

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

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

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

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

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...