MyBatis mapper文件中的变量引用方式#{}与${}的差别
来源:互联网 发布:c语言基础入门知识 编辑:程序博客网 时间:2024/06/16 09:27
使用#{}传入参数,sql语句解析时会加上“,当成字符串去解析
例如:select * from student where id=#{id}
相当于 select * from student where id="1001"
使用${}传入参数,sql解析时什么都不会加,直接生成sql语句
例如:select * from student where id=${id}
相当于 select * from student where id=1001
使用#{}可以防止sql注入也就是语句的拼接。 ${}
使用在order by排序语句中 通常这些使用$
的字符串是基本上不会变的。
能用#就尽量不要用${}
原因是:
会引起sql注入,${}
会直接参与sql编译,影响sql语句的预编译。。
我总结的两者的根本区别就是一个带引号一个不带引号。。
例子:
select * from student where name=#{name}select * from student where name=${name}
两者编译完后都会变成:select * from student where name="zs"
但是两者在预编译处理时的步骤是不一样的
使用#{}在预编译处理时是把参数部分用一个占位符?来代替变成:
select * from student where name=?
而使用${}则是简单的字符串的替换,在动态解析的阶段会被解析成:
selecct * from student where name="zs"
{}的参数替换是发生在DBMS中,而${}则是发生在动态解析时。
如果表明变为user;delete user;
那么 select * from ${tableName} where name=#{name}
就会变成 select * from user; delete user
两个操作 先查询表 然后删除表,这样就会对数据库造成损伤,所以能用#{}就尽量用#{}。。。
阅读全文
0 0
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- [DB][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别
- [DB][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别
- 【Mybatis架构】Mapper映射文件中的#{}与${}
- Mybatis Mapper文件中的$和#的区别
- mybatis 不同Mapper文件引用resultMap
- mybatis的mapper配置方式
- 编程检验ASCII码值与字符对应关系 P11
- Java接口样例(使用注解方式)
- DB2中select查询某表期间无法drop删除该表;Oracle不然
- PHP知识点总结
- 2014 ECCV 行人检测文献综述 学习笔记
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- 数据的安全
- TRACE,ASSERT,VERIFY
- 空指针on a null object reference问题
- Java 基础练习之方法定义
- expected at least 1 bean which qualifies as autowire candidate for this depe错误的简单分析
- Microsoft Excel设置单元格下拉框的方法
- ”打印helloworld“代码
- css实现 display: none和display: block的切换动画