mybatis中 #{keyword} , ${keyword} 什么区别
${keyword}
和 #{keyword}
是 MyBatis 中用于参数替换的两种不同的占位符形式,它们有以下区别:
-
${keyword}
:这是一种简单的字符串替换占位符形式,它会将占位符${keyword}
直接替换为传入的参数值。例如,在 XML 配置文件中使用${keyword}
,相当于在 SQL 语句中直接拼接参数的字符串表示。这种方式存在 SQL 注入的风险,因为参数值将直接插入 SQL 字符串中,所以需要自行转义或过滤用户输入。 -
#{keyword}
:这是一种更安全的参数绑定占位符形式,它会自动将传入的参数进行预编译和类型处理,并使用参数占位符?
替代#{keyword}
。MyBatis 会通过预编译的方式将参数值传递给底层数据库,从而避免了 SQL 注入的风险。此外,#{}
还提供了更多的功能,比如自动类型转换、防止特殊字符转义等。
总结起来,${}
是简单的字符串替换,而 #{}
是参数绑定占位符。在使用参数时,为了安全性和可维护性,推荐使用 #{}
的方式。它不仅可以防止 SQL 注入攻击,还可以处理参数值的类型转换等问题,更适合在 MyBatis 中进行参数绑定。
- 但上述图片中like使用,需要用$,
#
会报错
相信坚持的力量,日复一日的习惯.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2022-07-20 怎么免费搞下百度文库文章
2019-07-20 微信小程序之对象转化为数组