mybatis入门--#{}和${}的区别
来源:互联网 发布:光翼网络班多少钱 编辑:程序博客网 时间:2024/06/07 23:26
我们知道,在mybatis中,sql语句是需要我们自己写的。跟在普通的sql不一样的是,我们在使用mybatis框架的时候,使用的占位符不是
?而是
#{}有时候还会出现这个符号
${}这些符号都代表啥呢?
#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换,使用${}有造成sql注入的风险, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
通过以上对比,我们可以发现,还是使用占位符#{}比较安全,但是,在有些情况下,我们没有办法使用占位符,只能使用拼接符。如:
<select id="findUserByUserName" parameterType="java.lang.String" resultType="cn.itcast.pojo.User">SELECT * FROM user where username like '%${value}%' and 1=1 --liyasong</select>这时,我们可以通过js过滤的方法挡住一部分的sql注入,但是还是可以使用工具进行注入,这个问题如何解决目前楼主没有进行研究,欢迎各位大神进行指导。
0 0
- mybatis入门--#{}和${}的区别
- MyBatis #和$ 的区别
- Mybatis #和$ 的区别
- Mybatis #和$的区别
- Mybatis $和#的区别
- mybatis $ 和# 的区别
- MyBatis #{} 和${}的区别
- mybatis:#{}和${}的区别
- MyBatis #{} 和 ${} 的区别
- MyBatis # 和 $的区别
- Mybatis # 和 $ 的区别
- mybatis #和$的区别
- mybatis的#和$的区别
- MyBatis的#和$的区别
- mybatis的#和$的区别
- mybatis的#和$的区别
- MyBatis的#和$的区别
- Mybatis的$和#的区别
- Hadoop+HBase完全分布式安装
- 编程思想笔记 01
- MATLAB 绘图
- oracle数据库和表空间的最大数据容量限制
- 备忘贴
- mybatis入门--#{}和${}的区别
- 【三子棋】C语言小程序三子棋
- JavaScript系列----数据类型以及传值和传引用
- 线性表和有序表的合并
- js数组引用传递
- Vue.js安装
- 使用awk批量杀进程的命令
- dubbo源码分析-服务发布
- FFmpeg函数介绍