MyBatis学习03_#{}和${}区别以及使用


#{}和${}区别以及使用

#{} :#{} 是以预编译的形式,直接将参数设置到sql语句中; 使用PreparedStatement的sql封装方法:设置了占位符为"?",可以有效地防止sql注入.

<!--select * from sysuser where uname like '%${uname}%'-->
<select id="selectUserLikeName" resultType="com.shangma.cn.entity.Sysuser">
    select * from sysuser where uname like  '%' #{uname} '%'
</select>
<!-- select * from sysuser where uid = #{arg0} and uname like '%' #{arg1} '%'-->
<select id="selectUserByIdAndName" resultType="com.shangma.cn.entity.Sysuser">
    select * from sysuser where uid = #{param1} and uname like '%' #{param2} '%'
</select>

${} :不能防止sql注入 :一般排序使用,排序字段或者表名(很少使用)

<select id="selectList" resultType="com.shangma.cn.entity.Sysrole">
    select * from sysrole order by ${sortedField} ${sorted}
</select>

sql注入:在执行sql的时候。 如果使用的是${},用户输入的内容直接拼在sql语句上,这样就有可能拼成一条语法正确的sql,但是不符合我们要执行的sql

相关扩展:

sql注入,一个例子让你知道什么是sql注入cuikai_ii的博客-CSDN博客sql注入例子

MyBatis中使用#{}和${}符号获取参数值的区别-百度经验 (baidu.com)

MyBatis常见面试题1:精讲#{}和${}的区别是什么? - MyBatis中文官网


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM