• 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

    结果

    在这里插入图片描述

    数据库示例

    在这里插入图片描述

  • 相关阅读:
    python 元组
    1024 创作者节,奖金多多,直通 offer ~
    【AI实战】应用xgboost.XGBRegressor搭建空气质量预测模型(一)
    【深度学习】单隐层神经网络
    MYSQL事务操作
    Go语言入门之数组切片
    springboot与flowable(2):流程部署
    PV操作经典例题
    Spark基础:Kafka分布式消息系统
    flink的计时器
  • 原文地址:https://blog.csdn.net/sgx1825192/article/details/133443229