最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql中#{}和${}的區(qū)別詳解

 更新時間:2022年02月16日 08:45:25   作者:拒絕熬夜啊  
本文主要介紹了mysql中#{}和${}的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

#{}會將傳入的數(shù)據(jù)當成一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號

order by #{userId}   
這里假如userId = 111,那么解析成sql時會變成 order by "111"
這里如果userId = idStr,那么解析成sql時會變成 order by "idStr"

${}會將傳入的數(shù)據(jù)直接顯示生成在sql中

order by #{userId}  
這里假如userId = 111,那么解析成sql時會變成 order by 111
這里如果userId = idStr,那么解析成sql時會變成 order by idStr

#方式能夠很大程度防止sql注入;$方式無法防止Sql注入。

$方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名。

一般能用#的就別用$。MyBatis排序時使用order by 動態(tài)參數(shù)時需要注意,用$而不是#。

默認情況下,使用#{}格式的語法會導致MyBatis創(chuàng)建預處理語句屬性并以它為背景設(shè)置安全的值(比如?)。這樣做很安全,很迅速也是首選做法,有時你只是想直接在SQL語句中插入一個不改變的字符串。比如,像ORDER BY,你可以這樣來使用:

ORDER BY ${columnName}; 這里MyBatis不會修改或轉(zhuǎn)義字符串。

例子:

在沒有做防Sql注入的時候,我們的Sql語句可能是這么寫的:

<select id="fetchStudentByName" parameterType="String" resultType="entity.StudentEntity"> SELECT id,name,age FROM student WHERE name = '${value}' </select>

在這里插入圖片描述

但如果我們對傳入的姓名參數(shù)做一些更改,比如改成anything’ OR ‘x’='x,那么拼接而成的Sql就變成了

SELECT id,name,age FROM student WHERE name = 'anything' OR 'x'='x'

在這里插入圖片描述

庫里面所有的學生信息都被拉了出來,是不是很可怕。原因就是傳入的anything’ OR ‘x’='x和原有的單引號,正好組成了 ‘anything’ OR ‘x’='x’,而OR后面恒等于1,所以等于對這個庫執(zhí)行了查所有的操作。

防范Sql注入的話,就是要把整個anything’ OR ‘x’='x中的單引號作為參數(shù)的一部分,而不是和Sql中的單引號進行拼接

使用了#即可在Mybatis中對參數(shù)進行轉(zhuǎn)義

<select id="fetchStudentByName" parameterType="String" resultType="entity.StudentEntity"> SELECT id,name,age FROM student WHERE name = #{name} </select>

我們看一下發(fā)送到數(shù)據(jù)庫端的Sql語句長什么樣子。

SELECT id,name,age FROM student WHERE name = 'anything\' OR \'x\'=\'x'

到此這篇關(guān)于mysql中#{}和${}的區(qū)別的文章就介紹到這了,更多相關(guān)mysql中#{}和${}的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

河南省| 东光县| 五常市| 弥勒县| 成都市| 广饶县| 宕昌县| 全南县| 瓮安县| 北票市| 巩义市| 长宁区| 临清市| 巩义市| 稻城县| 永春县| 永春县| 额尔古纳市| 仙居县| 怀仁县| 平阳县| 绥棱县| 宜兰市| 中江县| 安庆市| 彰化县| 安达市| 石棉县| 开鲁县| 和林格尔县| 依安县| 老河口市| 缙云县| 犍为县| 青阳县| 沁阳市| 吉木乃县| 镇雄县| 图木舒克市| 阳江市| 奇台县|