MyBatis中#{ }和${ }的区别(笔面试题)

MyBatis中#{ }和${ }的区别详解

1.#将传入的数据当成一个字符串,会对自动传入的数据加一个

双引号。

例如order by #id#,如果传入的值是111,那么解析成sql时变为order by “111”,如果传入的值是id,在解析成sql为order by “id”.

其实原来sql语句通常写成order by #{id} 与order by #id#的效果

一样。

 

2.$将传入的数据直接显示在sql语句中。例如order by${id},如果

传入的值则解析成sql语句为order by 9

 

3.#方式能够很大程度上防止sql注入,而$无法防止sql注入,

$一般用于传入数据库对象,例如传入表名,

一般能用#就别用$

 

4.mybatis排序是用order by动态参数时需要注意,用$而不是用

#。

 

 

5.查询语句使用别名来解决,#{ }是spring表达式,${ }是el表达式。

猜你喜欢

转载自www.cnblogs.com/shijinglu2018/p/9627712.html
今日推荐