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

MyBatisPlus條件構(gòu)造器的實(shí)現(xiàn)示例

 更新時(shí)間:2023年12月15日 09:24:44   作者:黃晶諦  
本文主要介紹了MyBatisPlus條件構(gòu)造器的實(shí)現(xiàn)示例,主要包括了QueryWrapper,UpdateWrapper,LambdaQueryWrapper,LambdaUpdateWrapper這四種,具有一定的參考價(jià)值,感興趣的可以了解下

主要包括以下幾種:

  • QueryWrapper
  • UpdateWrapper
  • LambdaQueryWrapper
  • LambdaUpdateWrapper

用法示例如下:

QueryWrapper

1 查詢示例

    /**
     * ==>  Preparing: SELECT id,user_name AS name,age,email,is_deleted FROM user WHERE is_deleted=0 AND (user_name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
     * ==> Parameters: %雷%(String), 10(Integer), 30(Integer)
     * <==    Columns: id, name, age, email, is_deleted
     * <==        Row: 1734579107187970050, 李雷, 12, lilei@giser.com, 0
     * <==      Total: 1
     * 用戶列表信息為:[User(id=1734579107187970050, name=李雷, age=12, email=lilei@giser.com, isDeleted=0)]
     */
    @Test
    void testQueryWrapper01(){
        // 查詢用戶名包含“雷”字,且年齡在20到30之間,郵箱不為null的用戶信息
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("user_name", "雷")
                .between("age", 10, 30)
                .isNotNull("email");

        List<User> userList = userMapper.selectList(queryWrapper);
        log.info("用戶列表信息為:{}", userList);
    }
    /**
     * SELECT id,user_name AS name,age,email,is_deleted FROM user WHERE is_deleted=0 ORDER BY age DESC,id ASC
     */
    @Test
    void testOrderBy02(){
        // 查詢用戶列表,按照年齡降序,按照ID升序排序
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("age")
                .orderByAsc("id");
        List<User> userList = userMapper.selectList(queryWrapper);
        log.info("用戶列表信息為:{}", userList);
    }
  • 組裝select子句
    /**
     * 組裝select子句
     */
    @Test
    void testCompSubSql(){
        // 只查詢部分字段
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("user_name", "age", "email");
        List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);
        log.info("查詢部分字段:{}", maps);
    }
  • 子查詢
    /**
     * 子查詢
     * ==>  Preparing: SELECT id,user_name AS name,age,email,is_deleted FROM user WHERE is_deleted=0 AND (id IN (select id from t_user where age > 10))
     * ==> Parameters:
     * <==    Columns: id, name, age, email, is_deleted
     * <==        Row: 1, Jone, 18, test1@baomidou.com, 0
     * <==        Row: 2, 竊聽風(fēng)云, 23, giserDev@163.com, 0
     * <==        Row: 3, Tom, 28, test3@baomidou.com, 0
     * <==      Total: 3
     * 查詢結(jié)果為:[User(id=1, name=Jone, age=18, email=test1@baomidou.com, isDeleted=0), User(id=2, name=竊聽風(fēng)云, age=23, email=giserDev@163.com, isDeleted=0), User(id=3, name=Tom, age=28, email=test3@baomidou.com, isDeleted=0)]
     */
    @Test
    void testCompSubSql2(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.inSql("id", "select id from t_user where age > 10");
        List<User> userList = userMapper.selectList(queryWrapper);
        log.info("查詢結(jié)果為:{}", userList);
    }

2 刪除示例

    /**
     * ==>  Preparing: UPDATE user SET is_deleted=1 WHERE is_deleted=0 AND (user_name = ? AND age = ?)
     * ==> Parameters: 李雷(String), 12(Integer)
     * <==    Updates: 1
     */
    @Test
    void testDelete03(){
        // 刪除功能測(cè)試,此時(shí)為邏輯刪除,實(shí)際上執(zhí)行的是更新語句
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_name", "李雷")
                .eq("age", 12);
        int delete = userMapper.delete(queryWrapper);
        log.info("用戶列表信息為:{}", delete);
    }

3 更新示例

    /**
     * ==>  Preparing: UPDATE user SET user_name=?, age=?, email=? WHERE is_deleted=0 AND (user_name = ? AND age = ? OR email IS NULL)
     * ==> Parameters: 韓梅梅(String), 23(Integer), giserDev@163.com(String), 李雷(String), 12(Integer)
     * <==    Updates: 1
     */
    @Test
    void testUpdate01(){
        // 更新姓名為”李雷“且年齡為12歲,或郵箱為空的數(shù)據(jù)
        // case 1: 使用QueryWrapper
        // 設(shè)定更新條件
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_name", "李雷")
                .eq("age", 12)
                .or()
                .isNull("email");
        // 設(shè)定更新數(shù)據(jù)
        User updUser = new User();
        updUser.setEmail("giserDev@163.com");
        updUser.setName("韓梅梅");
        updUser.setAge(23);
        int update = userMapper.update(updUser, queryWrapper);
        log.info("更新條數(shù)為:{}", update);
    }
  • MybatisPlus條件優(yōu)先級(jí):lambda表達(dá)式內(nèi)的邏輯優(yōu)先運(yùn)算
    /**
     * ==>  Preparing: UPDATE user SET user_name=?, age=?, email=? WHERE is_deleted=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
     * ==> Parameters: 竊聽風(fēng)云(String), 23(Integer), giserDev@163.com(String), %J%(String), 18(Integer)
     * <==    Updates: 1
     */
    @Test
    void testUpdate02(){
        // 將用戶名中包含有J并且(年齡大于18或郵箱為null)的用戶信息修改
        // case 2: lambda表達(dá)式內(nèi)的邏輯優(yōu)先運(yùn)算
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("user_name", "J")
                .and(
                        wrapper -> wrapper.gt("age", 18)
                                .or()
                                .isNull("email")
                );
        // 設(shè)定更新數(shù)據(jù)
        User updUser = new User();
        updUser.setEmail("giserDev@163.com");
        updUser.setName("竊聽風(fēng)云");
        updUser.setAge(23);
        int update = userMapper.update(updUser, queryWrapper);
        log.info("更新條數(shù)為:{}", update);
    }
}

UpdateWrapper

    /**
     * UPDATE user SET user_name=?,email=? WHERE is_deleted=0 AND (user_name = ? AND (age > ? AND email IS NULL))
     */
    @Test
    void testUpdateWrapper(){
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("user_name", "kitty")
                .and(wrapper -> wrapper.gt("age", 10).isNull("email"));
        updateWrapper.set("user_name", "gis2023").set("email", "gis2023@163.com");
        int update = userMapper.update(updateWrapper);
        log.info("更新條數(shù)為:{}", update);
//        int update1 = userMapper.update(null, updateWrapper);
//        log.info("更新條數(shù)為:{}", update1);
    }

4 條件組裝

示例一

    /**
     * ==>  Preparing: SELECT id,user_name AS name,age,email,is_deleted FROM user WHERE is_deleted=0 AND (user_name LIKE ? AND age >= ? AND age <= ?)
     * ==> Parameters: %張三%(String), 10(Integer), 20(Integer)
     * <==      Total: 0
     */
    @Test
    void testDynamicSqlWrapper(){
        String username = "張三";
        Integer ageBgn = 10;
        Integer ageEnd = 20;
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(username)){
            queryWrapper.like("user_name", username);
        }

        if (ageBgn != null){
            queryWrapper.ge("age", ageBgn);
        }

        if (ageEnd != null){
            queryWrapper.le("age", ageEnd);
        }

        List<User> userList = userMapper.selectList(queryWrapper);
        log.info("查詢記錄為:{}", userList);
    }

示例二 使用condition

    /**
     * 使用condition組裝條件
     * ==>  Preparing: SELECT id,user_name AS name,age,email,is_deleted FROM user WHERE is_deleted=0 AND (user_name LIKE ? AND age >= ? AND age <= ?)
     * ==> Parameters: %張三%(String), 10(Integer), 20(Integer)
     * <==      Total: 0
     */
    @Test
    void testDynamicSqlWrapper02(){
        String username = "張三";
        Integer ageBgn = 10;
        Integer ageEnd = 20;
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(username), "user_name", username)
                .ge(ageBgn != null, "age", ageBgn)
                .le(ageEnd != null, "age", ageEnd);

        List<User> userList = userMapper.selectList(queryWrapper);
        log.info("查詢記錄為:{}", userList);
    }

LambdaQueryWrapper

    /**
     *
     * ==>  Preparing: SELECT id,user_name AS name,age,email,is_deleted FROM user WHERE is_deleted=0 AND (user_name LIKE ? AND age >= ? AND age <= ?)
     * ==> Parameters: %張三%(String), 10(Integer), 20(Integer)
     * <==      Total: 0
     */
    @Test
    void testDynamicSqlWrapper03(){
        String username = "張三";
        Integer ageBgn = 10;
        Integer ageEnd = 20;
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.like(StringUtils.isNotBlank(username), User::getName, username)
                .ge(ageBgn != null, User::getAge, ageBgn)
                .le(ageEnd != null, User::getAge, ageEnd);

        List<User> userList = userMapper.selectList(lambdaQueryWrapper);
        log.info("查詢記錄為:{}", userList);
    }

LambdaUpdateWrapper

    /**
     * ==>  Preparing: UPDATE user SET user_name=?,email=? WHERE is_deleted=0 AND (user_name = ? AND (age > ? AND email IS NULL))
     * ==> Parameters: gis2023(String), gis2023@163.com(String), kitty(String), 10(Integer)
     * <==    Updates: 0
     */
    @Test
    void testUpdateWrapper02(){
        LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        lambdaUpdateWrapper.eq(User::getName, "kitty")
                .and(wrapper -> wrapper.gt(User::getAge, 10).isNull(User::getEmail));
        lambdaUpdateWrapper.set(User::getName, "gis2023").set(User::getEmail, "gis2023@163.com");
        int update = userMapper.update(lambdaUpdateWrapper);
        log.info("更新條數(shù)為:{}", update);
//        int update1 = userMapper.update(null, lambdaUpdateWrapper);
//        log.info("更新條數(shù)為:{}", update1);
    }

常用

最常用的是LambdaQueryWrapper 和 LambdaUpdateWrapper

到此這篇關(guān)于MyBatisPlus條件構(gòu)造器的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)MyBatisPlus條件構(gòu)造器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Feign如何解決服務(wù)之間調(diào)用傳遞token

    Feign如何解決服務(wù)之間調(diào)用傳遞token

    這篇文章主要介紹了Feign如何解決服務(wù)之間調(diào)用傳遞token,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringMVC中的@RequestMapping注解解析

    SpringMVC中的@RequestMapping注解解析

    這篇文章主要介紹了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解為控制器指定可以處理哪些?URL?請(qǐng)求,在控制器的類定義及方法定義處都可標(biāo)注@RequestMapping,需要的朋友可以參考下
    2023-12-12
  • SpringBoot2.x使用POI實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)到Excel

    SpringBoot2.x使用POI實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)到Excel

    這篇文章主要為大家詳細(xì)介紹了SpringBoot2.x如何使用POI實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)到Excel,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-07-07
  • SpringBoot整合Redis管道的示例代碼

    SpringBoot整合Redis管道的示例代碼

    本文將結(jié)合實(shí)例代碼,介紹SpringBoot整合Redis管道,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • IDEA配置Maven教程的超詳細(xì)講解版

    IDEA配置Maven教程的超詳細(xì)講解版

    IntelliJ IDEA是當(dāng)前最流行的Java IDE(集成開發(fā)環(huán)境)之一,也是業(yè)界公認(rèn)最好用的Java開發(fā)工具之一,這篇文章主要給大家介紹了關(guān)于IDEA配置Maven教程的超詳細(xì)講解版,需要的朋友可以參考下
    2023-11-11
  • Java使用keySet方法獲取Map集合中的元素

    Java使用keySet方法獲取Map集合中的元素

    這篇文章主要為大家詳細(xì)介紹了Java使用keySet方法獲取Map集合中的元素,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java 包和訪問權(quán)限操作

    Java 包和訪問權(quán)限操作

    這篇文章主要介紹了Java 包和訪問權(quán)限操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Java設(shè)置Excel數(shù)據(jù)驗(yàn)證的示例代碼

    Java設(shè)置Excel數(shù)據(jù)驗(yàn)證的示例代碼

    數(shù)據(jù)驗(yàn)證是Excel 2013版本中,數(shù)據(jù)功能組下面的一個(gè)功能。本文將通過Java程序代碼演示數(shù)據(jù)驗(yàn)證的設(shè)置方法及結(jié)果,感興趣的可以了解一下
    2022-05-05
  • 實(shí)例講解Java的Spring框架中的AOP實(shí)現(xiàn)

    實(shí)例講解Java的Spring框架中的AOP實(shí)現(xiàn)

    這篇文章主要介紹了Java的Spring框架中的AOP實(shí)現(xiàn)實(shí)例,AOP面向切面編程其實(shí)也可以被看作是一個(gè)設(shè)計(jì)模式去規(guī)范項(xiàng)目的結(jié)構(gòu),需要的朋友可以參考下
    2016-04-04
  • java之路徑分隔符介紹

    java之路徑分隔符介紹

    考慮到程序的可移植性,創(chuàng)建文件時(shí)建議大家選用"/",因?yàn)榻?jīng)過測(cè)試用java創(chuàng)建文件時(shí)在windows平臺(tái)下用“/”也是可以的,java貌似在后臺(tái)作過處理了。
    2013-03-03

最新評(píng)論

康平县| 咸丰县| 古蔺县| 什邡市| 农安县| 宁武县| 宁武县| 和静县| 长阳| 通河县| 信宜市| 横山县| 吉首市| 德令哈市| 康定县| 清徐县| 宁陵县| 呼图壁县| 沙洋县| 班玛县| 和龙市| 大兴区| 兴城市| 禹城市| 章丘市| 安陆市| 梅河口市| 丰都县| 县级市| 察雅县| 安国市| 白沙| 图木舒克市| 潼南县| 基隆市| 松原市| 云浮市| 涡阳县| 永定县| 武宁县| 英山县|