關(guān)于mybatis中l(wèi)like模糊查詢中#和$的使用

在mybatis中經(jīng)常要寫到like 查詢,以前從來沒有遇到什么問題,突然遇到一個問題,找了好長時間沒找到,最后找到了,是關(guān)于#和$的使用的,總結(jié)如下:

name like? 表達(dá)式??? and??? falg=#{falg}

本次示例中共兩個條件,一個是name? like? 表達(dá)式, 還有flag相等,這個是使用#{}占位符,沒有任何問題,關(guān)鍵問題就是 表達(dá)式的書寫.下面來研究下表達(dá)式的書寫:

如果寫成'%#{name}%' ,就會報錯Parameter index out of range (2> number of parameters, which is 1).?這個錯誤,就是參數(shù)的問題,所以就查閱了一下資料,然后結(jié)合自己的實(shí)踐,得到總結(jié)如下:

本次使用 mysql 5.5.27和mybatis3.2.7進(jìn)行測試


1.表達(dá)式: name like"%"#{name}"%"

==>?Preparing: select * from bbs_brand WHERE namelike"%"?"%"and falg=? limit 0 , 10

==>Parameters:?蓮(String), 1(Integer)

能夠查詢出來,沒有問題,這是使用了占位符來占位,寫成SQL就是: name like "%"'蓮'"%"沒有問題


2.表達(dá)式: name like?'%${name}%'

Preparing:select count(0) from (select * from bbs_brand WHERE name like'%蓮%'?and falg=?) as total

Parameters: 1(Integer)

使用$進(jìn)行字符串的拼接,直接把傳入的值,拼接上去了,沒有任何問題


3.?表達(dá)式: name likeconcat(concat('%',#{username}),'%')

==>?Preparing: select count(0) from (select *from bbs_brand WHERE name like

?concat(concat('%',?),'%')?and falg=?) as total

==>Parameters:?蓮(String), 1(Integer)

這是使用了cancat進(jìn)行字符串的連接,同時使用了#進(jìn)行占位

轉(zhuǎn)換成SQL就是: name like CONCAT(CONCAT('%','蓮'),'%')


3.?表達(dá)式:name like?CONCAT('%','${name}','%')

==>?Preparing: select count(0) from (select *from bbs_brand WHERE name likeCONCAT('%','蓮','%')?and falg=?) astotal

==>Parameters: 1(Integer)

對上面的表達(dá)式進(jìn)行了簡化,更方便了


4.?表達(dá)式:name like?'%'||#{name}||'%'

這個不能滿足要求,直接把數(shù)據(jù)庫中的所有數(shù)據(jù)查詢出來了,不符合我的要求,在mysql中||代表是or的意思

==>?Preparing: select count(0) from (select *from bbs_brand WHERE name like'%'||?||'%'?and falg=?) as total

==>Parameters:?蓮(String), 1(Integer)

關(guān)于$和#使用的第二個問題:

接口中方法:void deleteBrandByIds(@Param("ids")String? ids);

xml中:


update bbs_brand set is_display=0 where id IN?(${ids})

這里只能夠使用$ 進(jìn)行字符串的拼接,而不是#.

當(dāng)我們傳入的字符串是1,3,5,7的時候,用#只能刪除id為1的品牌,其他的就不能刪除了,這是因?yàn)?使用了#,就是一個占位符了,經(jīng)過編譯后是

where id in(?)?? 加入字符串后是 where id in('1,3,5,7') 這種,在SQL中就只會刪除一個,我們來看SQL的執(zhí)行效果

也是只是刪除一條記錄的,

所以如果想使用#,請?jiān)趚ml中使用動態(tài)的SQL,,傳遞的參數(shù)使用List來進(jìn)行循環(huán)遍歷.

https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-18045781879.2.33c5236bZlPDUM&id=569353717228

深入理解Java虛擬機(jī)(jvm性能調(diào)優(yōu)+內(nèi)存模型+虛擬機(jī)原理)? ?很不錯的虛擬機(jī)視頻教程.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抱慌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘦陈,老刑警劉巖行瑞,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叹阔,死亡現(xiàn)場離奇詭異截酷,居然都是意外死亡蔓同,警方通過查閱死者的電腦和手機(jī)饶辙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斑粱,“玉大人弃揽,你說我怎么就攤上這事≡虮保” “怎么了矿微?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尚揣。 經(jīng)常有香客問我涌矢,道長,這世上最難降的妖魔是什么快骗? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任娜庇,我火速辦了婚禮,結(jié)果婚禮上方篮,老公的妹妹穿的比我還像新娘名秀。我一直安慰自己,他們只是感情好藕溅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布匕得。 她就那樣靜靜地躺著,像睡著了一般巾表。 火紅的嫁衣襯著肌膚如雪汁掠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天集币,我揣著相機(jī)與錄音考阱,去河邊找鬼。 笑死惠猿,一個胖子當(dāng)著我的面吹牛羔砾,可吹牛的內(nèi)容都是我干的负间。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姜凄,長吁一口氣:“原來是場噩夢啊……” “哼政溃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起态秧,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤董虱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后申鱼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愤诱,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年捐友,在試婚紗的時候發(fā)現(xiàn)自己被綠了淫半。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡匣砖,死狀恐怖科吭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猴鲫,我是刑警寧澤对人,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站拂共,受9級特大地震影響牺弄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宜狐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一势告、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肌厨,春花似錦培慌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至表鳍,卻和暖如春馅而,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背譬圣。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工瓮恭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厘熟。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓屯蹦,卻偏偏與公主長得像维哈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子登澜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 姓名:于川皓 學(xué)號:16140210089 轉(zhuǎn)載自:https://baike.baidu.com/item/sq...
    道無涯_cc76閱讀 1,949評論 0 2
  • 這一篇最主要是記錄下命令脑蠕,方便以后查找 使用Mysql 創(chuàng)建數(shù)據(jù)庫 create database mysql_t...
    Treehl閱讀 577評論 0 0
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,332評論 0 10
  • 今天是周一也是兒子第一次遲到购撼,爸爸竟然忘了周一要早到校,我也是深深的醉了谴仙。迂求。。晃跺。 下午我休息揩局,早上說好了早點(diǎn)接孩子...
    瑞寶麻麻閱讀 202評論 0 0
  • 有一樹花開滿記憶 文/朱佳佳 相遇,是美好的開始哼审。 從未見過如此動人的梅谐腰,幾抹紅色點(diǎn)綴著銀裝素裹的世界孕豹,像是精靈...
    雲(yún)水禪心211閱讀 253評論 0 1