MyBatisPlus条件查询的三种格式于null判定

DQL编程控制
条件查询:MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
方式一:使用QueryWrapper查询数据,lt是小于的意思,price是数据表的字段名称(price容易写错,不推荐)

 void testGetAll(){
        //方式一:按条件查询
        QueryWrapper wrapper = new QueryWrapper<>();
        wrapper.lt("price",10);//查询数据库中的price属性值小于10的数据
        List<Book> bookList=bookDao.selectList(wrapper);
        System.out.println(bookList);
        System.out.println("-----------------");
   }

方式二:使用lambda格式进行查询,Book是一个对应book表的实体类(当查询条件多的时候要经常写lambda().xxx,所以不推荐)

 void testGetAll(){
        //方式二:lambda格式按条件查询
        QueryWrapper<Book> wrapper2 = new QueryWrapper<Book>();//添加泛型
        wrapper2.lambda().lt(Book::getPrice,10);//lambda格式查询数据库中的price属性值小于10的数据
        List<Book> bookList2=bookDao.selectList(wrapper2);
        System.out.println(bookList2);
        System.out.println("--------------");
   }

方式三:使用LambdaQueryWrapper进行查询,可以省略almbda().xxx,推荐

void testGetAll(){
        //方式三:lambda格式按条件查询
        LambdaQueryWrapper<Book> lambdaQueryWrapper=new LambdaQueryWrapper<Book>();
        //9-50之间
        lambdaQueryWrapper.lt(Book::getPrice,50).ge(Book::getPrice,9);//lambda格式查询数据库中的price属性值小于50且大于9的数据
        List<Book> bookList3=bookDao.selectList(lambdaQueryWrapper);
        System.out.println(bookList3);
        //小于9或大于50
        lambdaQueryWrapper.lt(Book::getPrice,9).or().ge(Book::getPrice,50);
        List<Book> bookList4=bookDao.selectList(lambdaQueryWrapper);
        System.out.println(bookList4);
   }

我的表数据如下:
在这里插入图片描述

--------------
下面介绍null判定
首先建一个Book2类继承Book类,Book2再添加price2属性用于记录price的最大值

public class Book2  extends Book{
    private Integer price2;//用于设置price的上限

    public Integer getPrice2() {
        return price2;
    }

    public void setPrice2(Integer price2) {
        this.price2 = price2;
    }
}

2.修改方式三,添加null判定

void testGetAll(){
        //方式三:lambda格式按条件查询
        Book2 book2=new Book2();
        book2.setPrice(5);//price最小值
        book2.setPrice2(35);//price最大值

        LambdaQueryWrapper<Book> lambdaQueryWrapper=new LambdaQueryWrapper<Book>();
        //9-50之间
        //当price的最大值不为空时,查询price小于最大值的数据
        lambdaQueryWrapper.lt(null!=book2.getPrice2(),Book::getPrice,book2.getPrice2())
        当price的最小值不为空时,查询price大于最小值的数据
                          .ge(null!=book2.getPrice(),Book::getPrice,book2.getPrice());
        List<Book> bookList3=bookDao.selectList(lambdaQueryWrapper);
        System.out.println(bookList3);


        //小于9或大于50
//        lambdaQueryWrapper.lt(Book::getPrice,9).or().ge(Book::getPrice,50);
//        List<Book> bookList4=bookDao.selectList(wrapper);
//        System.out.println(bookList4);
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值