mybatis中 #{keyword} , ${keyword} 什么区别

${keyword}#{keyword} 是 MyBatis 中用于参数替换的两种不同的占位符形式,它们有以下区别:

  1. ${keyword}:这是一种简单的字符串替换占位符形式,它会将占位符 ${keyword} 直接替换为传入的参数值。例如,在 XML 配置文件中使用 ${keyword},相当于在 SQL 语句中直接拼接参数的字符串表示。这种方式存在 SQL 注入的风险,因为参数值将直接插入 SQL 字符串中,所以需要自行转义或过滤用户输入。

  2. #{keyword}:这是一种更安全的参数绑定占位符形式,它会自动将传入的参数进行预编译和类型处理,并使用参数占位符 ? 替代 #{keyword}。MyBatis 会通过预编译的方式将参数值传递给底层数据库,从而避免了 SQL 注入的风险。此外,#{} 还提供了更多的功能,比如自动类型转换、防止特殊字符转义等。

总结起来,${} 是简单的字符串替换,而 #{} 是参数绑定占位符。在使用参数时,为了安全性和可维护性,推荐使用 #{} 的方式。它不仅可以防止 SQL 注入攻击,还可以处理参数值的类型转换等问题,更适合在 MyBatis 中进行参数绑定。

  • 但上述图片中like使用,需要用$,#会报错
posted @   盘思动  阅读(134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2022-07-20 怎么免费搞下百度文库文章
2019-07-20 微信小程序之对象转化为数组
点击右上角即可分享
微信分享提示