久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

mybatis中bind標(biāo)簽和concat的使用說(shuō)明

瀏覽:39日期:2023-10-20 17:49:05

首先,二種方式都可以用來(lái)模糊查詢(xún),都能預(yù)防 SQL 注入。但是在更換數(shù)據(jù)庫(kù)情況下,bind標(biāo)簽通用。

<if test=” userName != null and userName !=””> and userName like concat(’%’ ,#{userName},’%’)</if>

使用concat函數(shù)連接字符串,在mysql中這個(gè)函數(shù)支持多個(gè)參數(shù),但是在oracle中這個(gè)函數(shù)只支持2個(gè)參數(shù),由于不同數(shù)據(jù)庫(kù)之間的語(yǔ)法差異,更換數(shù)據(jù)庫(kù),這些語(yǔ)法就需要重寫(xiě)??梢杂胋ind標(biāo)簽來(lái)避免更換數(shù)據(jù)庫(kù)所帶來(lái)的一些麻煩。

bind 標(biāo)簽可以使用 OGNL 表達(dá)式創(chuàng)建一個(gè)變量井將其綁定到上下文中。

<bind name= ' userNameBind ” value = ”’ % ’+ userNarne + ’ %’” /> <if test=” userName != null and userName !=””> and userName like #{userNameBind}</if>

bind 標(biāo)簽的兩個(gè)屬性都是必選項(xiàng), name 為綁定到上下文的變量名, value 為 OGNL 表達(dá)式。創(chuàng)建一個(gè) bind 標(biāo)簽的變量后 , 就可以在下面直接使用,使用 bind 拼接字符串不僅可以避免因更換數(shù)據(jù)庫(kù)而修改 SQL,也能預(yù)防 SQL 注入,還能實(shí)現(xiàn)多個(gè)引用userNameBind

補(bǔ)充知識(shí):MyBatis在Oracle數(shù)據(jù)庫(kù)下用concat函數(shù)模糊查詢(xún)之參數(shù)個(gè)數(shù)無(wú)效錯(cuò)誤

Oracle拼接字符串concat需要注意的小事項(xiàng)

在用ssm框架編寫(xiě)代碼的時(shí)候,因?yàn)?b>數(shù)據(jù)庫(kù)換成了Oracle,在模糊查詢(xún)數(shù)據(jù)的時(shí)候突然發(fā)現(xiàn)報(bào)錯(cuò)了

select * from SYS_MENU where url like concat(’%’,#{roleName},’%’)

一直報(bào)錯(cuò)參數(shù)個(gè)數(shù)無(wú)效,在網(wǎng)上查找資料發(fā)現(xiàn)模糊查詢(xún)的sql語(yǔ)句還是concat(’%’,’s’,’%’)這樣寫(xiě)的

但后面發(fā)現(xiàn)實(shí)際上oracle中不支持concat的三個(gè)參數(shù)的拼接,需要更正為

select * from SYS_MENU where url like concat(concat(’%’,#{roleName}),’%’)

或者使用

select * from SYS_MENU where url like ’%’ || #{roleName} || ’%’;

以上這篇mybatis中bind標(biāo)簽和concat的使用說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

相關(guān)文章:
主站蜘蛛池模板: 甘洛县| 略阳县| 靖边县| 乌苏市| 双柏县| 恩平市| 萨嘎县| 惠来县| 平遥县| 肥乡县| 曲沃县| 青浦区| 进贤县| 海城市| 湖口县| 大理市| 扎鲁特旗| 左云县| 沾化县| 高平市| 贺兰县| 石阡县| 德令哈市| 长沙市| 安乡县| 巍山| 红原县| 岑溪市| 沧州市| 安远县| 凌源市| 界首市| 皮山县| 庆元县| 南陵县| 民勤县| 巴林左旗| 北京市| 天等县| 吉首市| 奉贤区|