**
在mybatis中經常要寫到like 查詢,以前從來沒有遇到什麼問題,突然遇到乙個問題,找了好長時間沒找到,最後找到了,是關於#和$的使用的,總結如下:
name like 表示式 and falg=#
本次示例中共兩個條件,乙個是name like 表示式, 還有flag相等,這個是使用#{}佔位符,沒有任何問題,關鍵問題就是 表示式的書寫.下面來研究下表示式的書寫:
如果寫成'%#%' ,就會報錯parameter index out of range (2> number of parameters, which is 1). 這個錯誤,就是引數的問題,所以就查閱了一下資料,然後結合自己的實踐,得到總結如下:
本次使用 mysql 5.5.27和mybatis3.2.7進行測試
1.表示式: name like"%"#"%"
==> preparing: select * from bbs_brand where namelike"%"?"%"and falg=? limit 0 , 10
==>parameters: 蓮(string), 1(integer)
能夠查詢出來,沒有問題,這是使用了佔位符來佔位,寫成sql就是: name like "%"'蓮'"%"沒有問題
2.表示式: name like '%$%'
preparing:select count(0) from (select * from bbs_brand where name like'%蓮%' and falg=?) as total
parameters: 1(integer)
使用$進行字串的拼接,直接把傳入的值,拼接上去了,沒有任何問題
3. 表示式: name likeconcat(concat('%',#),'%')
==> preparing: select count(0) from (select *from bbs_brand where name like
concat(concat('%',?),'%') and falg=?) as total
==>parameters: 蓮(string), 1(integer)
這是使用了cancat進行字串的連線,同時使用了#進行佔位
轉換成sql就是: name like concat(concat('%','蓮'),'%')
3. 表示式:name like concat('%','$','%')
==> preparing: select count(0) from (select *from bbs_brand where name likeconcat('%','蓮','%') and falg=?) astotal
==>parameters: 1(integer)
對上面的表示式進行了簡化,更方便了
4. 表示式:name like '%'||#||'%'
這個不能滿足要求,直接把資料庫中的所有資料查詢出來了,不符合我的要求,在mysql中||代表是or的意思
==> preparing: select count(0) from (select *from bbs_brand where name like'%'||?||'%' and falg=?) as total
==>parameters: 蓮(string), 1(integer)
關於$和#使用的第二個問題:
介面中方法:void deletebrandbyids(@param("ids")string ids);
xml中:
update bbs_brand set is_display=0 where id in ($)
這裡只能夠使用$ 進行字串的拼接,而不是#.
當我們傳入的字串是1,3,5,7的時候,用#只能刪除id為1的品牌,其他的就不能刪除了,這是因為,使用了#,就是乙個佔位符了,經過編譯後是
where id in(?) 加入字串後是 where id in('1,3,5,7') 這種,在sql中就只會刪除乙個,我們來看sql的執行效果
也是只是刪除一條記錄的,
所以如果想使用#,請在xml中使用動態的sql,,傳遞的引數使用list來進行迴圈遍歷.
mybatis中關於example類詳解
這幾天剛接觸example,很多內容都是破碎的,寫一篇博文加深理解。一 什麼是example類 mybatis generator會為每個字段產生如上的criterion,如果表的字段比較多,產生的example類會十分龐大。理論上通過example類可以構造你想到的任何篩選條件。在mybatis ...
mybatis中關於example類詳解
一 什麼是example類 mybatis generator會為每個字段產生如上的criterion,如果表的字段比較多,產生的example類會十分龐大。理論上通過example類可以構造你想到的任何篩選條件。在mybatis generator中加以配置,配置資料表的生成操作就可以自動生成ex...
關於Mybatis中的幾個常用標籤
1.propertiesresource jdbcconfig.properties properties一般都被用來引入外部配置檔案,然後讀取,當然,引入的配置檔案裡的內容一定要是按照鍵值對的形式儲存的。下面看看怎麼讀取吧!name driver value name url value name...