Mybatis配置文件中#{ }和${ }的区别

#{ }和${ }都可以从map中取到相对应的值,

但是

#{ }采取的是预编译的方式(PreparedStatement)来执行sql语句,有效防止了sql注入问题

select * from book where id=? and name = ?

而${ }采用的是拼接sql的方式

select * from book where id = 2 and name ='zhangsan'

这样会存在安全问题


 

大多数情况下我们使用#{ }的方式来取值,

但是在遇到原生JDBC不能使用占位符的情况下

比如分表操作,排序操作等等

select * from 表名;

这个表名不可以使用占位符,取值的话可以使用${table_name }的方式来获取相应的表名 

posted @ 2018-01-21 14:25  在谷歌上百度  阅读(319)  评论(0编辑  收藏  举报