Mybatis 提供了两种支持动态 sql 接收参数的语法:#{var} 和 ${var},两者的区别如下:
1)#{var} 在预处理时,会把参数部分用一个占位符 ? 代替,变成如下的 sql 语句:
select * from tb_user where userName = ?;
2)${var} 则只是字符串替换,在动态解析阶段,该 sql 语句会被解析成
select * from tb_user where userName = ‘admin’;
这种方式会导致 sql 注入的问题。
所以开发中选第一种方式较安全。