欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

條件構(gòu)造器

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

在MP查詢(xún)中,還可以使用lambda方式查詢(xún),降低數(shù)據(jù)庫(kù)列表寫(xiě)錯(cuò)的風(fēng)險(xiǎn)。

Wrapper中基本比較操作

操作方法方法說(shuō)明
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, …)

測(cè)試案例:

    @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);
        }
    }

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

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

上面代碼中的condition就是要進(jìn)行計(jì)算的表達(dá)式,最終表達(dá)式結(jié)果為boolean類(lèi)型。

舉個(gè)例子:

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

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

下面那個(gè)具體的案例,條件查詢(xún)測(cè)試案例:

    @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);
    }

模糊查詢(xún)

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 '王%' 

測(cè)試案例:

    @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);
        }
    }

運(yùn)行結(jié)果為:

邏輯查詢(xún)

or

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

and

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

測(cè)試案例:

    @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查詢(xún)中,默認(rèn)查詢(xún)所有的字段,如果有需要也可以通過(guò)select方法進(jìn)行指定字段。

測(cè)試案例:

    @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ù):變長(zhǎng)數(shù)組,設(shè)置多個(gè)字段名 
例: orderByAsc("id", "name") ---> order by id ASC,name ASC 

orderByDesc :降序排序

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

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

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

也可以多個(gè)orderBy拼裝,如下:

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

效果同上面語(yǔ)句。

測(cè)試案例:

    @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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java之SM4加密解密的實(shí)現(xiàn)

    Java之SM4加密解密的實(shí)現(xiàn)

    這篇文章主要介紹了Java之SM4加密解密的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Mybatis Plus 自定義方法實(shí)現(xiàn)分頁(yè)功能的示例代碼

    Mybatis Plus 自定義方法實(shí)現(xiàn)分頁(yè)功能的示例代碼

    這篇文章主要介紹了Mybatis Plus 自定義方法實(shí)現(xiàn)分頁(yè)功能的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 關(guān)于SpringBoot中事務(wù)失效的幾種情況

    關(guān)于SpringBoot中事務(wù)失效的幾種情況

    這篇文章主要介紹了關(guān)于SpringBoot中事務(wù)失效的幾種情況,Spring AOP默認(rèn)使用動(dòng)態(tài)代理,會(huì)給被代理的類(lèi)生成一個(gè)代理類(lèi),事務(wù)相關(guān)的操作都通過(guò)代理來(lái)完成,使用內(nèi)部方法調(diào)用時(shí),使用的是實(shí)例調(diào)用,沒(méi)有通過(guò)代理類(lèi)調(diào)用方法,因此事務(wù)不會(huì)檢測(cè)到失敗,需要的朋友可以參考下
    2023-08-08
  • java中文傳值亂碼問(wèn)題的解決方法

    java中文傳值亂碼問(wèn)題的解決方法

    這篇文章主要為大家詳細(xì)介紹了java中文傳值亂碼問(wèn)題的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼

    關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼

    今天小編就為大家分享一篇關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 安裝IDEA和配置Maven的步驟詳解

    安裝IDEA和配置Maven的步驟詳解

    這篇文章主要介紹了安裝IDEA和配置Maven的步驟詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Springboot 使用 JSR 303 對(duì) Controller 控制層校驗(yàn)及 Service 服務(wù)層 AOP 校驗(yàn) 使用消息資源文件對(duì)消息國(guó)際化

    Springboot 使用 JSR 303 對(duì) Controller 控制層校驗(yàn)及 Service 服務(wù)層 AOP 校驗(yàn)

    這篇文章主要介紹了Springboot 使用 JSR 303 對(duì) Controller 控制層校驗(yàn)及 Service 服務(wù)層 AOP 校驗(yàn) 使用消息資源文件對(duì)消息國(guó)際化的相關(guān)知識(shí),需要的朋友可以參考下
    2017-12-12
  • java實(shí)現(xiàn)http請(qǐng)求工具類(lèi)示例

    java實(shí)現(xiàn)http請(qǐng)求工具類(lèi)示例

    這篇文章主要介紹了java實(shí)現(xiàn)http請(qǐng)求工具類(lèi)示例,需要的朋友可以參考下
    2014-05-05
  • 詳解Java程序并發(fā)的Wait-Notify機(jī)制

    詳解Java程序并發(fā)的Wait-Notify機(jī)制

    這篇文章主要介紹了詳解Java程序并發(fā)的Wait-Notify機(jī)制,多線程并發(fā)是Java編程中的重要部分,需要的朋友可以參考下
    2015-07-07
  • 基于SpringBoot多線程@Async的使用體驗(yàn)

    基于SpringBoot多線程@Async的使用體驗(yàn)

    這篇文章主要介紹了SpringBoot多線程@Async的使用體驗(yàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論