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);
   }
经验分享 程序员 微信小程序 职场和发展