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