在Java面试题当中,mybatis中$和#的区别是什么也是经常会出现的问题,那么个面试题的答案是什么呢?下面一起来了解一下吧!
一、mybatis中$和#的区别
1、#相当于对数据加上双引号
2、$相当于直接显示数据
3、#将传入的数据都当做是一个字符串,它会对自动传入的数据加一个双引号。
例:
order by #user_id#
假如,传入的值是111,则解析成sql时的值为order by "111", 假如,传入的值是id,那么解析成的sql为order by "id"。
4、$将传入的数据直接显示生成在sql当中
例:
order by $user_id$,假如传入的值是111,则解析成sql时的值为order by user_id, 假如,传入的值是id,那么解析成的sql为order by id。
5、$方式不能够防止Sql注入
6、#方式可以很大程度的防止sql注入
7、$方式一般多用于传入数据库对象
例:
传入表名
8、#{} 的参数替换是发生在DBMS当中, ${} 是发生在动态解析过程中
也就是:select * from user where name = #{name}
#{}在预编译的时候参数部分用一个占位符 ? 代替
例:
select * from user where name = ?
${}在动态解析的时候直接简单替换参数
例:select * from user where name = xxx
MyBatis排序的时候使用order by动态参数的时候,要注意一下了,用的是$,不是#
以上就是对于mybatis当中,$和#的区别介绍了,你都了解到了吗?
更多java相关问题回答,可以继续关注奇Q工具网的java常见问答专栏了解哦,里面有很多的java面试题问题相关回答呢,希望可以帮助大家呢!