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