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

mybatis?plus實(shí)現(xiàn)條件查詢

 更新時(shí)間:2022年05月27日 12:44:19   作者:把蘋(píng)果咬哭的測(cè)試筆記  
這篇文章主要為大家介紹了mybatis?plus實(shí)現(xiàn)條件查詢,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、wapper介紹

用mp也可以方便的實(shí)現(xiàn)稍復(fù)雜點(diǎn)的條件查詢,當(dāng)然了很復(fù)雜的就還是要xml編寫(xiě)sql了。

先看下mp的條件構(gòu)造抽象類(lèi)的結(jié)構(gòu):

Wrapper: 條件構(gòu)造抽象類(lèi),最頂端父類(lèi)

AbstractWrapper: 用于查詢條件封裝,生成 sql 的 where 條件

QueryWrapper: Entity 對(duì)象封裝操作類(lèi),不是用lambda語(yǔ)法

UpdateWrapper: Update 條件封裝,用于Entity對(duì)象更新操作

AbstractLambdaWrapper: Lambda 語(yǔ)法使用 Wrapper統(tǒng)一處理解析lambda獲取數(shù)據(jù)庫(kù)字段

LambdaQueryWrapper: 用于Lambda語(yǔ)法使用的查詢Wrapper

LambdaUpdateWrapper: Lambda 更新封裝Wrapper

不過(guò)最常用的還是QueryWrapper、UpdateWrapper等這些。

套路還是那樣,先創(chuàng)建QueryWrapper對(duì)象,然后再調(diào)用各種方法。

    // 測(cè)試條件查詢
    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper<User> wrapperUser = new QueryWrapper<>();
        // 設(shè)置查詢的條件
        // ge表示 >= , 這里就是查詢age字段,大于40的數(shù)據(jù)
        wrapperUser.ge("age", 40);
        // 調(diào)用查詢方法中,傳入wrapper對(duì)象
        List<User> users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

這里就會(huì)查詢表里age>=40,的數(shù)據(jù),看下執(zhí)行過(guò)程的sql語(yǔ)句:

二、常用的條件方法

在構(gòu)造條件的時(shí)候,除了上面的ge,還有很多其他的方法,這里簡(jiǎn)單介紹下比較常用的,并且貼出執(zhí)行的sql。

1. gt 表示 >

        ... ...
        // gt表示 > , 這里就是查詢age字段,大于40的數(shù)據(jù)
        wrapperUser.gt("age", 40);
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age > ? 
==> Parameters: 40(Integer)

2. le 表示 <=

        ... ...
        // le表示 <=, 這里就是查詢age字段,小于等于40的數(shù)據(jù)
        wrapperUser.le("age", 40);
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age <= ? 
==> Parameters: 40(Integer)

3. lt 表示 <

        ... ...
        // lt表示 &lt;, 這里就是查詢age字段,小于40的數(shù)據(jù)
        wrapperUser.lt("age", 40);
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age < ? 
==> Parameters: 40(Integer)

4. isNull 表示 查詢值為null

        ... ...
        // isNull
        wrapperUser.isNull("name");
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name IS NULL 
==> Parameters: 
<==      Total: 0

5. isNotNull 表示 查詢值為不為null

        ... ...
        // isNotNull
        wrapperUser.isNotNull("name");
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name IS NOT NULL 
==> Parameters:

6. eq 表示 =

        ... ...
        // eq
        wrapperUser.eq("name", "大周4");
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name = ? 
==> Parameters: 大周4(String)

7. ne 表示 !=

        ... ...
        // eq
        wrapperUser.ne("name", "大周4");
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name <> ? 
==> Parameters: 大周4(String)

8. between 表示 在范圍之間,包含邊界值

        ... ...
        // between
        wrapperUser.between("age", 40, 50);
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age BETWEEN ? AND ? 
==> Parameters: 40(Integer), 50(Integer)

9. notBetween 表示 在范圍之外,不含邊界值

        ... ...
        // between
        wrapperUser.notBetween("age", 40, 50);
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age NOT BETWEEN ? AND ? 
==> Parameters: 40(Integer), 50(Integer)

10. notBetween 表示 在范圍之外,不含邊界值

        ... ...
        // between
        wrapperUser.notBetween("age", 40, 50);
        ... ...

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age NOT BETWEEN ? AND ? 
==> Parameters: 40(Integer), 50(Integer)

11. allEq 多條件查詢

如果我where后面要加多個(gè)條件,可以使用allEq。先創(chuàng)建一個(gè)hashmap,然后把多個(gè)條件put進(jìn)去,再調(diào)用allEq即可。

    @Test
    void testQueryWrapper() {
        QueryWrapper&lt;User&gt; wrapperUser = new QueryWrapper&lt;&gt;();
        Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();
        map.put("id", 5);
        map.put("name", "wesson5");
        map.put("age", 29);
        wrapperUser.allEq(map);
        List&lt;User&gt; users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name = ? AND id = ? AND age = ? 
==> Parameters: wesson5(String), 5(Integer), 29(Integer)

12. .鏈?zhǔn)骄幊?,多條件查詢

此外,還可以使用鏈?zhǔn)骄幊?,直接在后面繼續(xù).調(diào)用別的方法。

    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper<User> wrapperUser = new QueryWrapper<>();
        wrapperUser.eq("age", 29)
                   .eq("name", "wesson5")
                   .eq("id", 5);
        List<User> users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age = ? AND name = ? AND id = ? 
==> Parameters: 29(Integer), wesson5(String), 5(Integer)

13. or、and

默認(rèn)情況下,在不調(diào)撥or()方法的情況下,是使用and()。

    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper<User> wrapperUser = new QueryWrapper<>();
        wrapperUser.eq("age", 29)
                   .or()
                   .eq("name", "wesson5")
                   .or()
                   .eq("id", 5);
        List<User> users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age = ? OR name = ? OR id = ? 
==> Parameters: 29(Integer), wesson5(String), 5(Integer)

14. 嵌套o(hù)r、嵌套and

查詢sql經(jīng)常會(huì)有嵌套o(hù)r或者and的情況,可以這樣寫(xiě):

    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper<User> wrapperUser = new QueryWrapper<>();
        wrapperUser.eq("age", 29)
                   .or(
                           i -> i.eq("name", "wesson5")
                                   .or()
                                   .eq("id", 5)
                   );
        List<User> users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age = ? OR ( name = ? OR id = ? ) 
==> Parameters: 29(Integer), wesson5(String), 5(Integer)

15. in、notIn

等于sql里的 in和not in。

    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper&lt;User&gt; wrapperUser = new QueryWrapper&lt;&gt;();
        wrapperUser.in("id", 1, 2, 3); 
        List&lt;User&gt; users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND id IN (?,?,?) 
==> Parameters: 1(Integer), 2(Integer), 3(Integer)

16. inSql、notinSql

inSql、notinSql可以用來(lái)子查詢,比如 where id in (select * ... ...)

    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper<User> wrapperUser = new QueryWrapper<>();
        wrapperUser.in("id", "select id from user where id < 5");
        List<User> users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND id IN (?) 
==> Parameters: select id from user where id < '5'(String)

17. last

last可以直接拼接sql到最后,只能調(diào)用一次,多次調(diào)用以最后一次為準(zhǔn)。
注意:有sql注入的風(fēng)險(xiǎn),慎用。

    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper<User> wrapperUser = new QueryWrapper<>();
        wrapperUser.last("limit 1");
        List<User> users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 limit 1 
==> Parameters: 

18. 指定要查詢的列

只查詢出指定的字段,比如"id", "name", "age"。

    @Test
    void testQueryWrapper() {
        //創(chuàng)建對(duì)象,泛型里加上實(shí)體對(duì)象
        QueryWrapper<User> wrapperUser = new QueryWrapper<>();
        wrapperUser.select("id", "name", "age");
        List<User> users = userMapper.selectList(wrapperUser);
        System.out.println(users);
    }

mp執(zhí)行的sql:

==>  Preparing: SELECT id,name,age FROM user WHERE deleted=0 
==> Parameters: 

以上是一些在業(yè)務(wù)開(kāi)發(fā)中常用的,稍復(fù)雜些的條件查詢,實(shí)際情況可能還有其他組合變化,更多關(guān)于mybatis plus條件查詢的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

陇西县| 喀喇| 郓城县| 黄浦区| 天门市| 温泉县| 通河县| 灌云县| 鹿邑县| 老河口市| 马边| 金乡县| 牟定县| 吴桥县| 兴城市| 合作市| 枣强县| 怀集县| 忻城县| 明星| 中西区| 民权县| 桂林市| 长春市| 曲水县| 和林格尔县| 福贡县| 嵩明县| 临夏市| 新余市| 临海市| 铜梁县| 江北区| 桓台县| 广灵县| 上饶市| 渑池县| 伊吾县| 泽库县| 兴化市| 麻栗坡县|