• MyBatisPlus(七)等值查询


    基础等值查询

    等值条件查询:使用 Wrapper 对象,传递查询条件。

    QueryWrapper(不推荐)

    用于查询的字段(如下例中的 name),是使用字符串写死的,无法在编译期检查是否和数据库里的字段一致,所以不建议使用。

    代码

        @Test
        void eq() {
            QueryWrapper<User> wrapper = new QueryWrapper<>();
            wrapper.eq("name", "张三");
            List<User> users = mapper.selectList(wrapper);
            log.info(users.toString());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果

    在这里插入图片描述

    LambdaQueryWrapper(推荐)

    LambdaQueryWrapper,将字段名方法引用表示,能够避免拼写错误。如果拼写错误,编译期就会直接报错。

    代码

        @Test
        void eqByLambda() {
            LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(User::getName, "张三");
            List<User> users = mapper.selectList(wrapper);
            log.info(users.toString());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果

    在这里插入图片描述

    非空参数 - 等值查询

    1. 在满足给定的执行条件时(一般为非空),本条查询参数生效(查询参数拼接到查询SQL语句的where子句中,作为查询条件);
    2. 不满足执行条件,本条查询参数无效。

    非空,一般指的是:不为 null空字符串仅包含空格的字符串

    代码

        @Test
        void selectByNameEquals_ZhangSan() {
            selectByNameEquals("张三");
        }
    
    
        @Test
        void selectByNameEquals_Null() {
            selectByNameEquals(null);
        }
    
    
        @Test
        void selectByNameEquals_Space() {
            selectByNameEquals("  ");
        }
    
    
        void selectByNameEquals(String name) {
            LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(StringUtils.hasText(name), User::getName, name);
            List<User> users = mapper.selectList(wrapper);
            log.info(users.toString());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    结果

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    多条件查询(逻辑与)

    多个查询条件,逻辑与(and),作为最终查询条件。

    代码

        /**
         * 查询用户列表, 查询条件:姓名为“张三”,且年龄为“28”。
         */
        @Test
        void selectByNameAndAge() {
            String name = "张三";
            String age = "28";
            LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(StringUtils.hasText(name), User::getName, name);
            wrapper.eq(StringUtils.hasText(age), User::getAge, age);
            List<User> users = mapper.selectList(wrapper);
            log.info(users.toString());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    结果

    在这里插入图片描述

    不等于查询

    代码

        /**
         * 查询用户列表, 查询条件:姓名不等于“张三”
         */
        @Test
        void selectNotEqual() {
            String name = "张三";
            LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
            wrapper.ne(StringUtils.hasText(name), User::getName, name);
            List<User> users = mapper.selectList(wrapper);
            log.info(users.toString());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    结果

    在这里插入图片描述

    数据库示例

    在这里插入图片描述

  • 相关阅读:
    Programming Languages PartB Week2学习笔记——用Racket编写解释器
    二、演练领域驱动的设计过程
    在 MongoDB 的 CRUD 操作中使用日期
    项目管理软件中注释功能的作用是什么?
    Symfony 请求教程
    Unity开发之观察者模式(事件中心)
    信息学奥赛一本通:2031:【例4.17】四位完全平方数
    Android 反编译Apk (Mac)
    04 JAR 文件规范
    权重衰减----添加正则化(多层感知机)
  • 原文地址:https://blog.csdn.net/sgx1825192/article/details/133443229