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

mybatis-plus條件構(gòu)造器的操作代碼

 更新時間:2022年03月24日 10:27:02   作者:流楚丶格念  
mybatis-plus提供了AbstractWrapper抽象類,提供了很多sql語法支持的方法,比如模糊查詢,比較,區(qū)間,分組查詢,排序,判斷空,子查詢等等,方便我們用面向?qū)ο蟮姆绞饺崿F(xiàn)sql語句,本文重點給大家介紹mybatis-plus條件構(gòu)造器的操作代碼,感興趣的朋友一起看看吧

條件構(gòu)造器

在MP中,Wrapper接口的實現(xiàn)類關(guān)系如下:

在MP查詢中,還可以使用lambda方式查詢,降低數(shù)據(jù)庫列表寫錯的風(fēng)險。

Wrapper中基本比較操作

操作方法方法說明
eq等于 =
ne不等于 <>
gt大于 >
ge大于等于 >=
lt小于 <
le小于等于 <=
betweenBETWEEN 值1 AND 值2
notBetweenNOT BETWEEN 值1 AND 值2
in字段 IN (value.get(0), value.get(1), …)
notIn字段 NOT IN (v0, v1, …)

測試案例:

    @Test
    public void testEqCp() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //SELECT id,user_name,password,name,age,email FROM tb_user WHERE password = ? AND age >= ? AND name IN (?,?,?)
        wrapper.eq("password", "123456")
                .ge("age", 20)
                .in("name", "李四", "王五", "趙六");
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

也可以用Lambda方式構(gòu)造條件:

    @Test
    public void testEqCp() {
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        //SELECT id,user_name,password,name,age,email FROM tb_user WHERE password = ? AND age >= ? AND name IN (?,?,?)
        wrapper.eq(User::getPassword, "123456")
                .ge(User::getAge, 20)
                .in(User::getName, "李四", "王五", "趙六");
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

上面是最簡單的查詢方法,通常在開發(fā)中要根據(jù)表達式進行判斷,表達式為true則拼接條件,如下:

eq(boolean condition, R column, Object val) 
in(boolean condition, R column, Object... values) ...

上面代碼中的condition就是要進行計算的表達式,最終表達式結(jié)果為boolean類型。

舉個例子:

比如根據(jù)name來判斷,如果name不為空則拼接條件 String name = null;

wrapper.eq(User::getPassword, "123456") 
		.ge(User::getAge, 20) 
		.in(name!=null,User::getName, "李四", "王五", "趙六");

下面那個具體的案例,條件查詢測試案例:

    @Test
    public void testEq3() {
        //條件
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        String name = null;
        Integer age = 20;
        queryWrapper.eq(name != null && !name.equals(""), User::getName, name);//等于
        queryWrapper.gt(age != null, User::getAge, age);//大于?

        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println(users);
    }

模糊查詢

like :

LIKE '%值%' 
例: like("name", "王") ---> name like '%王%' 

notLike:

NOT LIKE '%值%' 
例: notLike("name", "王") ---> name not like '%王%' 

likeLeft :

LIKE '%值' 
例: likeLeft("name", "王") ---> name like '%王' 

likeRight :

LIKE '值%' 
例: likeRight("name", "王") ---> name like '王%' 

測試案例:

    @Test
    public void testWrapper() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();

        //SELECT id,user_name,password,name,age,email FROM tb_user WHERE name LIKE ?
        //Parameters: %曹%(String)
        wrapper.likeRight("name", "曹");
        wrapper.select("id", "name","birthday");

        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

運行結(jié)果為:

邏輯查詢

or

拼接 OR 
主動調(diào)用 or 表示緊接著下一個**方法**不是用 and 連接!(不調(diào)用 or 則默認為使用 and 連接) 

and

AND 嵌套 
例: and(i -> i.eq("name", "李白").ne("status", "活著")) ---> and (name = '李白' and status <> '活著') 

測試案例:

    @Test
    public void testOr() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //SELECT id,user_name,password,name,age,email FROM tb_user WHERE name = ? OR age = ?
        wrapper.eq("name", "李四").or().eq("age", 24);
        //變?yōu)閍nd方式
        wrapper.eq("name", "李四").eq("age", 24);
    
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

將上面代碼改為lambda方式構(gòu)造條件:

    @Test
    public void testOr() {
    	LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); 		
        //SELECT id,user_name,password,name,age,email FROM tb_user WHERE name = ? OR age = ?
		wrapper.eq(User::getName,"李四").or().eq(User::getAge, 24);
        //變?yōu)閍nd方式
        wrapper.eq(User::getName, "李四").eq(User::getAge", 24);
        
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

select

在MP查詢中,默認查詢所有的字段,如果有需要也可以通過select方法進行指定字段。

測試案例:

    @Test
    public void testWrapper() {
        QueryWrapper<User> wrapper = new QueryWrapper<>(); //SELECT id,name,age FROM tb_user WHERE name = ? OR age = ? 
        wrapper.eq("name", "李四")
                .or()
                .eq("age", 24)
                .select("id", "name", "age");
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

Lambda方式構(gòu)造條件:

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "李四")
        .or()
        .eq(User::getAge, 24)
        .select(User::getId, User::getName, User::getAge);

排序

orderByAsc :升序排序

參數(shù):變長數(shù)組,設(shè)置多個字段名 
例: orderByAsc("id", "name") ---> order by id ASC,name ASC 

orderByDesc :降序排序

參數(shù):變長數(shù)組,設(shè)置多個字段名 
例: orderByDesc("id", "name") ---> order by id DESC,name DESC 

orderBy : 自定義排序規(guī)則

方法定義:orderBy(boolean condition, boolean isAsc, R... columns) 
參數(shù)1:true有效,false無效 ,參數(shù)2:是否升序,參數(shù)3..設(shè)置多個字段 
例: `orderBy(true, true, "id", "name")`‐‐‐>`order by id ASC,name ASC` 

也可以多個orderBy拼裝,如下:

orderBy(true, true, "id").orderBy(true, true, "name")

效果同上面語句。

測試案例:

    @Test
    public void testOrder() {
        QueryWrapper<User> wrapper = new QueryWrapper<>(); 
        //SELECT id,user_name,password,name,age,email FROM tb_user ORDER BY age DESC 
        wrapper.orderByDesc("age");
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

Lambda方式構(gòu)造條件:

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); 
wrapper.orderByDesc(User::getAge);

到此這篇關(guān)于mybatis-plus條件構(gòu)造器的文章就介紹到這了,更多相關(guān)mybatis-plus條件構(gòu)造器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合Swagger2的步驟詳解

    SpringBoot整合Swagger2的步驟詳解

    這篇文章主要介紹了SpringBoot整合Swagger2的步驟詳解,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下
    2021-04-04
  • java正則表達式簡單使用和網(wǎng)頁爬蟲的制作代碼

    java正則表達式簡單使用和網(wǎng)頁爬蟲的制作代碼

    java正則表達式簡單使用和網(wǎng)頁爬蟲的制作代碼,需要的朋友可以參考一下
    2013-05-05
  • Struts和servlet不能共存問題解決方法

    Struts和servlet不能共存問題解決方法

    這篇文章主要介紹了Struts和servlet不能共存問題解決方法,共有三種方法,需要的朋友可以參考下。
    2017-09-09
  • Java使用Knife4j優(yōu)化Swagger接口文檔的操作步驟

    Java使用Knife4j優(yōu)化Swagger接口文檔的操作步驟

    在現(xiàn)代微服務(wù)開發(fā)中,接口文檔的質(zhì)量直接影響了前后端協(xié)作效率,Swagger 作為一個主流的接口文檔工具,雖然功能強大,但其默認界面和部分功能在實際使用中略顯不足,而 Knife4j 的出現(xiàn)為我們提供了一種增強的選擇,本篇文章將詳細介紹如何在項目中集成和使用 Knife4j
    2024-12-12
  • SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法

    SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法

    下面小編就為大家分享一篇SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Java Collection集合iterator方法解析

    Java Collection集合iterator方法解析

    這篇文章主要介紹了Java Collection集合iterator方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • 淺析Java中ConcurrentHashMap的存儲流程

    淺析Java中ConcurrentHashMap的存儲流程

    ConcurrentHashMap技術(shù)在互聯(lián)網(wǎng)技術(shù)使用如此廣泛,幾乎所有的后端技術(shù)面試官都要在ConcurrentHashMap技術(shù)的使用和原理方面對小伙伴們進行360°的刁難,本文詳細給大家介紹一下ConcurrentHashMap的存儲流程,需要的朋友可以參考下
    2023-05-05
  • springboot自定義校驗注解的實現(xiàn)過程

    springboot自定義校驗注解的實現(xiàn)過程

    這篇文章主要介紹了springboot自定義校驗注解的實現(xiàn)過程,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • java使用spring實現(xiàn)發(fā)送mail的方法

    java使用spring實現(xiàn)發(fā)送mail的方法

    這篇文章主要介紹了java使用spring實現(xiàn)發(fā)送mail的方法,涉及java基于spring框架發(fā)送郵件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • spring boot加載freemarker模板路徑的方法

    spring boot加載freemarker模板路徑的方法

    這篇文章主要介紹了spring boot加載freemarker模板路徑的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論

怀远县| 嘉义市| 晋江市| 崇明县| 山阴县| 威海市| 屏东县| 宁武县| 泰安市| 泽普县| 义马市| 革吉县| 泸溪县| 泸州市| 萨嘎县| 睢宁县| 呼和浩特市| 美姑县| SHOW| 泗阳县| 闽侯县| 贵溪市| 五常市| 商都县| 平遥县| 宜兰县| 九龙县| 余江县| 新宾| 海城市| 庆阳市| 云龙县| 防城港市| 达日县| 镇安县| 海原县| 安阳市| 安徽省| 措勤县| 嘉定区| 娄烦县|