mybatis中#{}和${}的区别是什么? {}是预编译处理,${}是字符串替换。
(1)mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。
(2)mybatis在处理${}时,就是把${}替换成变量的值。
(3)使用#{}可以有效的防止SQL注入,提高系统安全性。原因在于:预编译机制。
预编译是提前对SQL语句进行预编译,而其后注入的参数将不会再进行SQL编译。我们知道,SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作。而预编译机制则可以很好的防止SQL注入。预编译完成之后,SQL的结构已经固定,即便用户输入非法参数,也不会对SQL的结构产生影响,从而避免了潜在的安全风险。
注:$符号一般用来当作占位符,常使用Linux脚本。例如:$1,$2等等表示输入参数的占位符。
相关推荐
- 面试题 1. Python是如何进行内存管理的? 2. 什么是lambda函数?它有什么好处? 3. Python里面如何实现tuple和list的转换? 4. 请写出一段Python代码实现删除一个list里面的重复元素 5. 编程用sort进行排序,然后从最后一个元素开始判断 6. Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别) 7. 介绍一下except的用法和作用? 8. Python中pass语句的作用是什么? 9. 介绍一下Python下range()函数的用法? 10. 如何用Python来进行查询和替换一个文本字符串? 11. Python里面match()和search()的区别? 12. 用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别? 13. Python里面如何生成随机数? 1
- .NET面试题集锦② 一、前言部分 1.实现产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 2.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 3.请指出GAC的含义? 4.向服务器发送请求有几种方式? 5.DataReader与Dataset有什么区别? 6.软件开发过程一般有几个阶段?每个阶段的作用? 7.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义? using 指令 和语句 new 创建实例 new 隐藏基类中方法。 8.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话, 仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个. 9.下面这段代码输出什么,为什么? 10.什么叫做SQL注入,如何防止?请举例说明。 11.什么是反射? 12.用Singleton如何写设计模式? 13.什么是Application Pool? 14.什么是虚函
- Mybatis面试问题集锦 1、#{}和${}的区别是什么? 2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签? 3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗? 18、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
- mybatis中#{}和${}的区别是什么? {}是预编译处理,${}是字符串替换。
- 六年面试经验来分享JAVA基础面试题 1.面向对象和面向过程的区别 2.Java语言有哪些特点 3.关于JVMJDK和JRE最详细通俗的解答 JVM 4.OracleJDK和OpenJDK的对比 5.Java和C++的区别 6.什么是Java程序的主类应用程序和小程序的主类有何不同 7. Java 应用程序与小程序之间有那些差别 8. 字符型常量和字符串常量的区别 9. 构造器 Constructor 是否可被 override 10. 重载和重写的区别 11. Java 面向对象编程三大特性: 封装 继承 多态 12. String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的 13. 自动装箱与拆箱 14. 在一个静态方法内调用一个非静态成员为什么是非法的 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用 16. import java 和 javax 有什么区别 17. 接口和抽象类的区别是什么 18. 成员变量与
- c++ 面试基本知识点整理(1) 2. 什么是虚拟构造函数以及析构造函数 3. 如何定义一个抽象类 4. 拷贝构造函数的定义 5. 重载与重写的区别 6. extern 与 static 7. 预处理器、编译器、汇编器和链接器的工作是什么? 8. 静态库与动态链接库的区别 9. 线程与进程的区别 10. What are the three types of test cases you should go through when unit testing? 11 How can you define a structure with bit field members? 12. Write Unix script to find the specific string from the given file? 13. How to find a child process in Unix? 14. What is difference between named pipes and unn
- angularJS详解 AngularJS的基本知识详解 4.2 特性二: 模板在AngularJS中,一个模板就是一个HTML文件。 但是HTML的内容扩展了,包含了很多帮助你映射model到view的内容。HTML模板将会被浏览器解析到DOM中。DOM然后成为AngularJS编译器的输入。AngularJS将会遍历DOM模板来生成一些指导,即,directive(指令)。所有的指令都负责针对view来设置数据绑定。我们要理解AuguarJS并不把模板当做String来操作。输入AngularJS的是DOM而非string。数据绑定是DOM变化,不是字符串的连接或者innerHTML变化。使用DOM作为输入,而不是字符串,是AngularJS区别于其它的框架的最大原因。使用DOM允许你扩展指令词汇并且可以创建你自己的指令,甚至开发可重用的组件。最大的好处是为设计师和开发者创建了一个紧密的工作流。设计师可以像往常一样开发标签,然后开发者拿过来添加上功能,通过数据绑定将会
- java面试题整合(持续更新) Redis是如何实现list存储的 SpringMVC的优势、基本原理以及大概的流程 JSP和servlet 的区别 Java中是 怎么解析xml的 MySQL数据库的索引有哪几种?有什么区别? class.forName是什么意思 几种造线程池的方法,区别 ? 面向服务通过什么样的方式实现? 消息中间件 acitveMQ 的作用、原理?几种模式,每种的特点及使用问题?MQ 发送消息失败怎么办? Tomcat 集群中怎么实现共享 在数据库怎么复制表数据和表结构? From表单提交的方法、属性,数据量大的时候用什么方法提交? 服务器宕机如何处理?全部宕机如何处理? java多线程有几种实现方法?都是什么?它们的区别? JDO是 什么?说说你 对JDO的 理解 如何在Jsp中把div或table隐藏起来? TCP和UDP的区别? Servelet在多个请求时存在线程安全问题,请讲一下在servelet编程中要注意什么问题? Quartz怎么配置啊? 服务器集群和ses
- java基础知识(二) 什么是java虚拟机?为什么java被称作是“平台无关的编译语言”? JDK和JRE的区别是什么? “static”关键字是什么意思?java中是否可以覆盖一个private或者是static的方法? 是否可以在static环境中访问非static变量? 同步方法和同步代码块的区别是什么? 在监视器内部,是如何做线程同步的?程序应该做那种级别的同步? 如何去报N个线程可以访问N个资源同时又不导致死锁? 为什么集合类没有实现Clonable和Serializable接口? 什么是迭代器(Iterator)? 快速失败和安全失败的区别是什么? Comparable和Comparator接口是干什么的?它们的区别? 什么是java优先级队列(Priority Queue)? Enumeration和Iterator接口的区别有哪些? System.gc()和Runtime.gc()会做什么事情? finalize()方法什么时候被调用?析构函数(finalization)的目的是
- iOS之某公司iOS开发笔试题 1、对数组中的元素去重复 2、说说以下元素的特性和作用 3、简单描述一下XIB与Storyboards,说一下他们的优缺点。 4、请把字符串"2015-04-10"格式化日期转为NSDate类型 5、在App中混合HTML5开发App如何实现的。在App中使用HTML5的优缺点是什么? 6、请描述一下同步和异步,说说它们之间的区别。 7、请简单描述一下队列和多线程的使用原理。 8、描述一下iOS的内存管理,在开发中对于内存的使用和优化包含哪些方面。我们在开发中应该注意哪些问题。 9、plist文件是用来做什么的。一般用它来处理一些什么方面的问题。 10、iOS中缓存一定量的数据以便下次可以快速执行,那么数据会存储在什么地方,有多少种存储方式? 11、请简单写出增、删、改、查的SQL语句。 最后
- POJ 3347 Kadj Squares
- hibernate中.常见的hql查询语句