面试问题mybatis #和$的区别
2017-09-08 11:15
218 查看
这个问题面试时被问到好几次,也是经常被问的一个问题
MyBatis中#和$的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
3. #方式能够很大程度防止sql注入。
4.$方式无法防止Sql注入。
5.$方式一般用于传入数据库对象,例如传入表名.
6.一般能用#的就别用$.
MyBatis中#和$的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
3. #方式能够很大程度防止sql注入。
4.$方式无法防止Sql注入。
5.$方式一般用于传入数据库对象,例如传入表名.
6.一般能用#的就别用$.
相关文章推荐
- 面试问题之:Dalvik VM和JVM的区别(2)---架构层
- 面试问题a+=b 和a=a+b的区别
- 面试问题:Vista与XP的Session 0与Session X的区别
- 【最近面试遇到的一些问题】JSP中动态INCLUDE与静态INCLUDE的区别
- 一些常见的ios面试问题 一眼看出ios初级和高级工程师的区别
- Java面试经典问题(3):抽象类与接口的区别
- 面试问题之:Dalvik VM和JVM的区别(1)
- Java常见面试问题:抽象类与接口的区别
- 进程与线程的区别(面试高频问题)
- 前端面试必问的问题:java 与javascript的区别
- 面试问题:进程和线程的区别是什么?
- 【笔面试】字符流和字节流的区别以及如何解决乱码问题
- 面试问题5:const 与 define 宏定义之间的区别
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- 面试问题redis rdb 和aof的区别
- 面试问题spring cloud和dubbo的区别
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- 【最近面试遇到的一些问题】java中list、set和map 的区别
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- 面试问题:进程与线程的区别和联系