MyBatis 中 #{} 与 ${} 的区别

it2023-12-26  71

#{} 与 ${} 都可以引用 dao 中声明的形参, 例如 #{param.name}#{} 是预编译的, 即 PreparedStatement, 推荐使用, 因为具有防止 SQL 注入作用; 而 ${} 是直接字符串拼接的, 普通的 Statement, 有 SQL 注入风险, 非必要时, 不推荐使用在需要动态传入表名 / 动态字段排序等场景时, 只能使用 ${} 来实现, 如果是前端传过来的参数, 那么要校验字符串的正则, 例如只允许字母数字下划线
最新回复(0)