国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 扶余县| 宾阳县| 白河县| 常山县| 稷山县| 平塘县| 甘孜| 弋阳县| 宁明县| 保山市| 巨野县| 保亭| 巨鹿县| 嵊泗县| 武邑县| 徐汇区| 兴国县| 南澳县| 乐昌市| 宁陕县| 平阴县| 蒲城县| 萍乡市| 宁河县| 大姚县| 桓台县| 武宣县| 道孚县| 阳新县| 怀来县| 佳木斯市| 云阳县| 彝良县| 淮北市| 莲花县| 达日县| 德令哈市| 陈巴尔虎旗| 射洪县| 肇州县| 齐河县|