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

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

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

#{}會(huì)將傳入的數(shù)據(jù)當(dāng)成一個(gè)字符串,會(huì)對(duì)自動(dòng)傳入的數(shù)據(jù)加一個(gè)雙引號(hào)

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

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

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

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

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

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

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

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

例子:

在沒(méi)有做防Sql注入的時(shí)候,我們的Sql語(yǔ)句可能是這么寫的:

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

在這里插入圖片描述

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

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

在這里插入圖片描述

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

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

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

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

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

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

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

相關(guān)文章

最新評(píng)論

五大连池市| 惠州市| 肇源县| 台北县| 东城区| 澄江县| 克东县| 沙河市| 甘德县| 宝兴县| 库伦旗| 土默特左旗| 广丰县| 晋江市| 彭州市| 汉源县| 呼玛县| 会泽县| 镇远县| 芜湖县| 修水县| 盐边县| 天峨县| 庆城县| 南安市| 旬阳县| 昔阳县| 菏泽市| 沂南县| 类乌齐县| 青田县| 合作市| 治多县| 梓潼县| 谢通门县| 盱眙县| 广东省| 玉田县| 图片| 鹤峰县| 额尔古纳市|