码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-01-21 16:13:31      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:问题   zha   安全   情况下   拼接   blog   情况   遇到   不能   

#{ }和${ }都可以从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 }的方式来获取相应的表名 

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

标签:问题   zha   安全   情况下   拼接   blog   情况   遇到   不能   

原文地址:https://www.cnblogs.com/zhangjianbing/p/8324119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!