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

结果

在这里插入图片描述

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. 在满足给定的执行条件时(一般为非空),本条查询参数生效(查询参数拼接到查询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());
    }

结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

多条件查询(逻辑与)

多个查询条件,逻辑与(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());
    }

结果

在这里插入图片描述

不等于查询

代码

    /**
     * 查询用户列表, 查询条件:姓名不等于“张三”
     */
    @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());
    }

结果

在这里插入图片描述

数据库示例

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋冠巡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值