最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MybatisPlus之likeRight的用法

 更新時間:2022年06月27日 17:19:30   作者:java-cp  
這篇文章主要介紹了MybatisPlus之likeRight的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

關(guān)于likeRight的用法

在使用Mybatis-plus的時候,使用like方法發(fā)現(xiàn)匹配的方法和自己想的相反,特此記錄下:

使用場景:

我想要查詢分類的某一層級下的訂單,如下圖,我想查詢所有“男裝”訂單

那么,如果是寫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));

哦豁,沒查到數(shù)據(jù)。然后就換成likeRight之后,bingo 數(shù)據(jù)出來了:

然后,我就默默的去看了下源碼(從上到下,層層遞進,直到最后我們找到了轉(zhuǎn)換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就是‘%’這個玩意兒加在左側(cè),likeRight就是加在右側(cè),默認就是兩邊都加,也就是like?。?!

使用like與likeright方法查詢信息的踩坑

先說結(jié)論,like 和 likeRight的區(qū)別就是

  • like:填入query的參數(shù)兩端加上通配符,會進行左右兩端進行l(wèi)ike匹配
  • likeRight:只給填入?yún)?shù)的右端加入通配符進行匹配。

所以使用的時候要搞清楚自己的需求,盲目使用like查詢會造成隱患。

案例

想要抽取 一串數(shù)字第7和8位組成是03的數(shù)據(jù)。

例子

2022010101
2022010203
2022010302
2022020102
2022020204
2022020301

結(jié)果應該是第3個和第6個。

然后我的like語句是

like("number", "______" + 03 + "%") //下劃線_ 代表占位符,表示這個位置的數(shù)字隨意,但是一個占位符表示只能有一個字符,意思表示為:前面6位數(shù)字隨意。但第7,8位必須要03.

然而結(jié)果是第2,3,6個,這個結(jié)果導致我一系列操作直接全部迷惑操作,把數(shù)據(jù)全大變樣。

最后知道原因,原來mybatisplus的like方法,會在執(zhí)行sql的時候給參數(shù)前后都加上%,這就導致我的6個下劃線失效, 所以數(shù)據(jù)混亂。

然后我換成likeRight就結(jié)果問題了,在找bug的時候,我從前端找到后端,從頁面找到請求,再檢查有沒有寫錯,最后發(fā)現(xiàn),數(shù)據(jù)庫這里出錯了,費了好大勁,太難了。

以后用like查詢的時候可要用對了,還是沒有系統(tǒng)的學習mybatisplus,基礎(chǔ)不好所導致的問題。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)學生成績信息管理系統(tǒng)

    java實現(xiàn)學生成績信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)學生成績信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • java中下拉框select和單選按鈕的回顯操作

    java中下拉框select和單選按鈕的回顯操作

    這篇文章主要介紹了java中下拉框select和單選按鈕的回顯操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java中BeanUtils.copyProperties()詳解及應用場景

    Java中BeanUtils.copyProperties()詳解及應用場景

    BeanUtils.copyProperties()是Apache?Commons?BeanUtils提供的方法,用于Java對象間屬性的復制,特別適用于DTO、VO和Entity之間的數(shù)據(jù)傳遞,這篇文章主要介紹了Java中BeanUtils.copyProperties()詳解及應用場景的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • Java Swing GridBagLayout網(wǎng)格袋布局的實現(xiàn)

    Java Swing GridBagLayout網(wǎng)格袋布局的實現(xiàn)

    這篇文章主要介紹了Java Swing GridBagLayout網(wǎng)格袋布局的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 淺析JVM如何處理Java中的精度轉(zhuǎn)換

    淺析JVM如何處理Java中的精度轉(zhuǎn)換

    在Java編程中,理解不同數(shù)據(jù)類型之間的轉(zhuǎn)換機制對于寫出高效、正確的代碼至關(guān)重要,本文將詳細探討Java中的精度轉(zhuǎn)換機制,有需要的小伙伴可以了解下
    2025-03-03
  • java Spring MVC4環(huán)境搭建實例詳解(步驟)

    java Spring MVC4環(huán)境搭建實例詳解(步驟)

    spring WEB MVC框架提供了一個MVC(model-view-controller)模型-視圖-控制器的結(jié)構(gòu)和組件,利用它可以開發(fā)更靈活、松耦合的web應用。MVC模式使得整個服務應用的各部分(控制邏輯、業(yè)務邏輯、UI界面展示)分離開來,使它們之間的耦合性更低
    2017-08-08
  • vscode快速引入第三方j(luò)ar包發(fā)QQ郵件

    vscode快速引入第三方j(luò)ar包發(fā)QQ郵件

    這篇文章主要介紹了vscode快速引入第三方j(luò)ar包發(fā)QQ郵件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java語法基礎(chǔ)之運算符學習筆記分享

    Java語法基礎(chǔ)之運算符學習筆記分享

    這篇文章主要為大家分享了Java語法基礎(chǔ)之運算符學習筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java學習之如何進行JSON解析

    Java學習之如何進行JSON解析

    JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,它算是JavaScript語言的一部分,與XML一樣都可以用于數(shù)據(jù)的存儲和傳輸,本文講給大家介紹如何進行JSON解析,需要的朋友可以參考下
    2023-12-12
  • java基面試礎(chǔ)知識詳解

    java基面試礎(chǔ)知識詳解

    這篇文章主要介紹了java基面試礎(chǔ)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08

最新評論

盱眙县| 平乡县| 大兴区| 桑植县| 昆山市| 渑池县| 义马市| 利辛县| 稷山县| 宜川县| 宽城| 新竹县| 通化县| 青海省| 兴和县| 四川省| 天台县| 运城市| 邻水| 古丈县| 辽阳市| 岳阳县| 舒城县| 三亚市| 安达市| 恩施市| 晋中市| 瑞安市| 信宜市| 乌海市| 牡丹江市| 北京市| 杭锦后旗| 博兴县| 呼图壁县| 华亭县| 五家渠市| 平谷区| 峨边| 呼玛县| 古交市|