您好,登錄后才能下訂單哦!
這篇文章主要介紹“MybatisPlus之likeRight怎么使用”,在日常操作中,相信很多人在MybatisPlus之likeRight怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MybatisPlus之likeRight怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在使用Mybatis-plus的時候,使用like方法發現匹配的方法和自己想的相反,特此記錄下:
使用場景:
我想要查詢分類的某一層級下的訂單,如下圖,我想查詢所有“男裝”訂單
那么,如果是寫SQL查詢就是這樣
select xx,xx from order_info where category_id like '10,20%';
可是,項目如果使用的是Mybatis-plus,那么我們該怎么寫呢?
最開始我想的是,likeLeft就是左匹配嘛,就按照下面這么寫:
this.list(Wrappers.<OrderInfo>lambdaQuery().likeLeft(OrderInfo::getCategoryId,orderQueryReq.getCategoryId()).eq(OrderInfo::getStatus,99));
哦豁,沒查到數據。然后就換成likeRight之后,bingo 數據出來了:
然后,我就默默的去看了下源碼(從上到下,層層遞進,直到最后我們找到了轉換SQL的地方,對!就是那個SqlUtils):
default Children likeRight(R column, Object val) { return this.likeRight(true, column, val); } Children likeRight(boolean condition, R column, Object val); public Children likeRight(boolean condition, R column, Object val) { this.getWrapper().likeRight(condition, column, val); return this.typedThis; } public Children likeRight(boolean condition, R column, Object val) { return this.likeValue(condition, column, val, SqlLike.RIGHT); } protected Children likeValue(boolean condition, R column, Object val, SqlLike sqlLike) { return this.doIt(condition, () -> { return this.columnToString(column); }, SqlKeyword.LIKE, () -> { return this.formatSql("{0}", SqlUtils.concatLike(val, sqlLike)); }); } public static String concatLike(Object str, SqlLike type) { switch (type) { case LEFT: return "%" + str; case RIGHT: return str + "%"; default: return "%" + str + "%"; } }
原來,它的likeLeft就是‘%’這個玩意兒加在左側,likeRight就是加在右側,默認就是兩邊都加,也就是like!!!
先說結論,like 和 likeRight的區別就是
like
:填入query的參數兩端加上通配符,會進行左右兩端進行like匹配
likeRight
:只給填入參數的右端加入通配符進行匹配。
所以使用的時候要搞清楚自己的需求,盲目使用like查詢會造成隱患。
想要抽取 一串數字第7和8位組成是03的數據。
例子
2022010101
2022010203
2022010302
2022020102
2022020204
2022020301
結果應該是第3個和第6個。
然后我的like語句是
like("number", "______" + 03 + "%") //下劃線_ 代表占位符,表示這個位置的數字隨意,但是一個占位符表示只能有一個字符,意思表示為:前面6位數字隨意。但第7,8位必須要03.
然而結果是第2,3,6個,這個結果導致我一系列操作直接全部迷惑操作,把數據全大變樣。
最后知道原因,原來mybatisplus的like方法,會在執行sql的時候給參數前后都加上%,這就導致我的6個下劃線失效, 所以數據混亂。
到此,關于“MybatisPlus之likeRight怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。