国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

mybatis #與$的區(qū)別與用法

2024-07-21 02:53:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

隨著開(kāi)發(fā)團(tuán)隊(duì)轉(zhuǎn)投Google Code旗下,ibatis3.x正式更名為Mybatis

我在開(kāi)發(fā)過(guò)程中,我主要是喜歡mybatis可以讓開(kāi)發(fā)者靈活的編寫(xiě)sql語(yǔ)句。其中動(dòng)態(tài)變量算是用的最多的了。

mybatis支持兩種動(dòng)態(tài)的往sql語(yǔ)句中嵌入變量的方式,一種是用#,另一種是$。

#appId#,使用#,是使用預(yù)編譯處理,mybatis會(huì)先用?占位(等同于PRepareStatement),再傳給配置的數(shù)據(jù)庫(kù)進(jìn)行處理。數(shù)據(jù)庫(kù)處理時(shí),會(huì)根據(jù)變量的類(lèi)型,進(jìn)行值替換。如果是VARCHAR,就會(huì)加上引號(hào),這樣可以很好的防止sql注入。

$appid$,使用$,mybatis會(huì)直接進(jìn)行值替換,變量類(lèi)型不影響。如果需要匹配的是字符串,那么編寫(xiě)的sql語(yǔ)句就需要手動(dòng)的加上引號(hào),比如  '$appid$',一些其他的函數(shù)也是類(lèi)似的。一般只有在需要傳入表名、列名這些數(shù)據(jù)庫(kù)保留字段時(shí),才會(huì)使用$$。因?yàn)槭侵苯?#20540;替換,所以使用$是不安全的。假如在一個(gè)登陸場(chǎng)景下,開(kāi)發(fā)者沒(méi)有手動(dòng)加引號(hào),用戶在密碼輸入框輸入 or 1=1 ,直接進(jìn)行值替換,最后的sql語(yǔ)句可能就是   username = 'username' or 1=1 ,這樣,會(huì)找出所有的用戶信息。

mybatis只是做了sql替換,比如使用#就等同于prepareStatement,使用$就相當(dāng)于開(kāi)發(fā)者直接寫(xiě)好了sql。真正做處理的還是數(shù)據(jù)庫(kù)服務(wù)器。比如預(yù)編譯,數(shù)據(jù)庫(kù)會(huì)在緩存中保留傳進(jìn)來(lái)的預(yù)編譯,當(dāng)下次有相同結(jié)構(gòu)的sql請(qǐng)求執(zhí)行時(shí),數(shù)據(jù)庫(kù)就可以更快的進(jìn)行處理。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 循化| 绵竹市| 涪陵区| 襄城县| 锦州市| 老河口市| 马公市| 英吉沙县| 青龙| 衡山县| 隆子县| 铜川市| 刚察县| 平山县| 开鲁县| 册亨县| 敖汉旗| 湖南省| 郎溪县| 海兴县| 依安县| 南江县| 巴里| 无极县| 永济市| 原平市| 南宁市| 咸丰县| 古丈县| 赣州市| 历史| 松江区| 永春县| 梨树县| 黑水县| 浦北县| 富平县| 平武县| 乌海市| 库伦旗| 徐水县|