MyBatisPlus 之 条件查询 <条件构造器>

        在进行查询的时候,我们的入口是在Wrapper这个类上,因为它是一个接口,所以我们需要去找它对 应的实现类,关于实现类也有很多,说明我们有多种构建查询条件对象的方式

 1. 第一种:QueryWrapper

        QueryWrapper qw = new QueryWrapper();
        qw.lt("age",18);
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);

 lt: 小于(<) ,最终的sql语句为

SELECT id,name,password,age,tel FROM user WHERE (age < ?)

更多的方法可以参考MyBatisPlus官网

条件构造器 | MyBatis-Plus (baomidou.com)https://baomidou.com/pages/10c804/#abstractwrapper这种方法有个小问题就是在写条件的时候,容易出错,比如age写错,就会导致查询不成功

2. 第二种:QueryWrapper的基础上使用lambda

        QueryWrapper<User> qw = new QueryWrapper<User>();
        qw.lambda().lt(User::getAge, 10);//添加条件
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);

User::getAget,lambda表达式中的,类名::方法名,最终的sql语句为

SELECT id,name,password,age,tel FROM user WHERE (age < ?)

注意: 构建 LambdaQueryWrapper 的时候泛型不能省

此时我们再次编写条件的时候,就不会存在写错名称的情况,但是qw后面多了一层lambda()调用 

3. 第三种:LambdaQueryWrapper

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

 这种方式就解决了上一种方式所存在的问题。

多条件构建

需求:查询数据库表中,年龄在10岁到30岁之间的用户信息 

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 30);
        lqw.gt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

gt:大于(>),最终的SQL语句为 

SELECT id,name,password,age,tel FROM user WHERE (age < ? AND age > ?) 

构建多条件的时候,可以支持链式编程 

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 30).gt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

需求:查询数据库表中,年龄小于10或年龄大于30的数据

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

 or()就相当于我们sql语句中的or关键字,不加默认是and,最终的sql语句为:

SELECT id,name,password,age,tel FROM user WHERE (age < ? OR age > ?)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值