Mybatis 的 #{} 与 ${} 的区别

特性#{}${}
本质 预编译(PreparedStatement) 字符串替换(直接拼接)
安全性 ✅ 安全(防止SQL注入) ❌ 不安全(易导致SQL注入)
参数处理 自动添加单引号,参数类型安全 不加任何引号,直接拼接字符串
适用场景 值参数(如字符串、数字、日期等) 动态表名、列名、排序字段等
SQL执行效率 ✅ 更高(利用数据库预编译缓存) ⚠️ 较低(每次生成新SQL,无法缓存)
是否推荐 ✅ 默认首选 ❌ 仅在必要时使用
posted @ 2026-01-20 15:33  嘿咻噜啦啦  阅读(1)  评论(0)    收藏  举报