中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MybatisPlus之likeRight怎么使用

發布時間:2022-06-28 14:16:17 來源:億速云 閱讀:1766 作者:iii 欄目:開發技術

這篇文章主要介紹“MybatisPlus之likeRight怎么使用”,在日常操作中,相信很多人在MybatisPlus之likeRight怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MybatisPlus之likeRight怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

likeRight的用法

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

使用場景:

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

MybatisPlus之likeRight怎么使用

那么,如果是寫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 數據出來了:

MybatisPlus之likeRight怎么使用

然后,我就默默的去看了下源碼(從上到下,層層遞進,直到最后我們找到了轉換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就是&lsquo;%&rsquo;這個玩意兒加在左側,likeRight就是加在右側,默認就是兩邊都加,也就是like!!!

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

先說結論,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怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

葵青区| 夹江县| 遂昌县| 翁源县| 丘北县| 乐至县| 东兴市| 和林格尔县| 涞水县| 罗平县| 兰溪市| 广灵县| 阳新县| 连南| 宣城市| 曲水县| 辽阳县| 河源市| 西贡区| 安新县| 呼玛县| 桑植县| 清涧县| 凯里市| 晴隆县| 兴仁县| 田阳县| 绵阳市| 嘉黎县| 祁东县| 洪雅县| 梁平县| 黄山市| 锦州市| 麦盖提县| 工布江达县| 内江市| 调兵山市| 铜梁县| 北宁市| 武鸣县|