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