iBATIS使用$和#的一些理解

我們?cè)谑褂胕BATIS時(shí)會(huì)經(jīng)常用到#這個(gè)符號(hào)罐呼。

比如:

select * from member where id =#id# 

然后,我們會(huì)在程序中給id這個(gè)變量傳遞一個(gè)值侦高,iBATIS會(huì)自動(dòng)將 #id# 轉(zhuǎn)成我們傳遞的內(nèi)容嫉柴。

但是我最近碰到一個(gè)奇怪的問題。我在批量刪除或修改的時(shí)候奉呛,居然SQL失效了计螺。

SQL如下:

update user set flag=#flag# where id in (#id#)     

delete from user where id in (#id#)   

傳遞的id為1,2,3。但是數(shù)據(jù)卻沒有任何的修改瞧壮。

后來查找了半天登馒,原來原因就是這個(gè) # 的問題。因?yàn)閕BATIS默認(rèn)會(huì)把 “#” 中間的變量作為字符串來處理咆槽。這樣陈轿,就會(huì)出現(xiàn)這樣的SQL:

update user set flag='1' where id in ('1,2,3')     

delete from user where id in ('1,2,3')  

這樣的SQL數(shù)據(jù)庫(kù)當(dāng)然是不會(huì)執(zhí)行的。那我們只有繞開iBATIS了嗎罗晕?

其實(shí)不用济欢,iBATIS其實(shí)還提供了另外一種方式赠堵,那就是使用 $ 來傳遞值小渊。你使用 $ 將你的變量括起來,iBATIS不會(huì)給這個(gè)變量做任何的處理茫叭,直接生成你要的SQL

如下面代碼從后臺(tái)傳入的參數(shù)為String="1,2,3,4";但是通過$value$獲取到的是1,2,3,4:

<delete id="deleteEntities" parameterType="java.lang.String"> 
    DELETE FROM INFO_TERMINALPRIVILEGES WHERE ID in ($value$) 
</delete>
update user set flag=$flag$ where id in ($id$)     
--update user set flag=1  where id in (1,2,3)     

delete from user where id in ($id$)  
--delete from user where id in (1,2,3) 

還可以用ibatis的iterate解決:

SQL:

<select id="test" parameterClass="java.util.List" resultClass="test.Roadline">      
  select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in       
    <iterate open="(" close=")" conjunction=",">      
      #value[]#      
    </iterate>      
</select>   
List list = new ArrayList();      
list.add("aaa");      
list.add("bbb");      
List rsList = sqlMap.queryForList("roadline.test", list);    

生成的SQL:

select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in (?,?)   

$ 中間的變量就是直接替換成值的
# 會(huì)根據(jù)變量的類型來進(jìn)行替換

原文可見:iBATIS使用$和#的一些理解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缩滨,更是在濱河造成了極大的恐慌,老刑警劉巖杀饵,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谬擦,居然都是意外死亡切距,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門惨远,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谜悟,“玉大人,你說我怎么就攤上這事北秽∑闲遥” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵贺氓,是天一觀的道長(zhǎng)蔚叨。 經(jīng)常有香客問我,道長(zhǎng)辙培,這世上最難降的妖魔是什么蔑水? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮扬蕊,結(jié)果婚禮上肤粱,老公的妹妹穿的比我還像新娘。我一直安慰自己厨相,他們只是感情好领曼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛮穿,像睡著了一般庶骄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上践磅,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天单刁,我揣著相機(jī)與錄音,去河邊找鬼府适。 笑死羔飞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的檐春。 我是一名探鬼主播逻淌,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼疟暖!你這毒婦竟也來了卡儒?” 一聲冷哼從身側(cè)響起田柔,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骨望,沒想到半個(gè)月后硬爆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡擎鸠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年缀磕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劣光。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虐骑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赎线,到底是詐尸還是另有隱情廷没,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布垂寥,位于F島的核電站颠黎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏滞项。R本人自食惡果不足惜狭归,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望文判。 院中可真熱鬧过椎,春花似錦、人聲如沸戏仓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赏殃。三九已至敷待,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仁热,已是汗流浹背榜揖。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抗蠢,地道東北人举哟。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像迅矛,于是被迫代替她去往敵國(guó)和親妨猩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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

  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis 诬乞? MyBatis 是支持定制化 SQL册赛、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,523評(píng)論 0 4
  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫(kù)概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 7,818評(píng)論 5 116
  • 轉(zhuǎn) # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 9,732評(píng)論 0 44
  • 明天我就三十歲了森瘪,在我生日來臨之際,首先對(duì)生我養(yǎng)我的父母感恩致謝票堵!謝謝三十年前媽媽您生下了我扼睬,給我了一次來世上走這...
    Buringsoul閱讀 136評(píng)論 3 1
  • 講述了格列佛的家境與生活狀況,父親希望他當(dāng)一名醫(yī)生并送他去劍橋求學(xué)悴势。而他窗宇,想到海上去,去過那種游歷冒險(xiǎn)的生活特纤。格列...
    墨染書坊閱讀 366評(píng)論 0 0