【数据库】mybatis中#{}与${}的区别
2019-04-21 17:30
176 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m18633778874/article/details/89435104
前言
小编在系统学习mybatis时,里面提到了#{}与${}两个概念,一个有担当的网站MyBatis中文官网http://www.mybatis.cn/archives/70.html,给出了解答,主要内容如下:
两者区别
#{}是预编译处理,${}是字符串替换
(1)mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。
(2)mybatis在处理${}时,就是把${}替换成变量的值。
(3)使用#{}可以有效的防止SQL注入,提高系统安全性。原因在于:预编译机制。预编译完成之后,SQL的结构已经固定,即便用户输入非法参数,也不会对SQL的结构产生影响,从而避免了潜在的安全风险。
(4)预编译是提前对SQL语句进行预编译,而其后注入的参数将不会再进行SQL编译。我们知道,SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作。而预编译机制则可以很好的防止SQL注入。
小结
通过这个解释说法,自己有些豁然开朗,加上之前的实践,对于这些说法有一定的感触。
感谢您的访问!
相关文章推荐
- mybatis的分页插件pagehelper-fix使用、数据库分页查询模板sql、总结mysql与oracle语句的区别
- 数据库中varchar和Nvarchar区别与联系
- mybatis中#{}和${}的区别和问题
- hibernate和mybatis的区别
- 非Spring环境下使用Mybatis操作数据库的流程
- 数据的远程登录账户密码和数据库用户的账户密码的区别
- 数据库-内连接与外连接的区别(举例说明)
- iBatis 到 MyBatis区别
- iBatis 到 MyBatis区别
- MyBatis学习(四):MyBatis使用代理方法(接口)实现数据库的操作
- 关系型数据库跟费关系型数据库区别
- mysql根据数据库自动生成实体(dto,service,impl,mybatis,xml)
- MyBatis动态sql之${}和#{}区别
- 【Java学习】mybatis和hibernate的区别
- 【springmvc+mybatis项目实战】杰信商贸-3.需求分析与数据库建模
- 什么是网站空间和数据库空间,有什么区别,他们之前的关系是?
- mybatis集成spring操作数据库(注解方式)
- Spring + Mybatis配置多数据库
- Oracle中Union与Union All的区别(适用多个数据库)
- mybatis中#{}和${}的区别与用法