条件查询
//Label : 实体类,传过来的参数
labelDao.findAll(new Specification<Label>(){
@Override
public Predicate toPredicate(Root<Label) root,CriteriaQuery<?> query,CriteriaBuilder cb){
//new一个list集合,来存放所有的条件
List<Predicate> list = new ArrayList<>();
if(label.getname() != null && !"".equals(label.getname())){
//条件若是模糊查询
Predicate predicate = cb.like(root.get("name").as(String.class),"%"+label.getname()+"%");//where name like "%小%"
list.add(predicate);
}
if(){
//若不是模糊查询 ,则把上面的%%去掉
list.add();
}
//new一个数组作为最终返回值的条件
Predicate[] parr = new Predicate[list.size()];
//把list直接转成数组
parr = list.toArray(parr);
return cb.add(parr);// where name like "%小%" //多个条件下 and
}
});
分页查询
public Page<Label> pageQuery(Label label, int page,int size){
//封装分页对象
Pageable pageable = PageRequest.of(page-1,size);
return labelDao.findAll(new Specification<Label>(){
//root :根对象,也就是要把条件封装到哪个对象中, where 类名 = label.getid
//quert : 封装的都是查询关键字,比如 group by ,order by 等
//cb : 用来封装条件对象的,如果直接返回null,表示不需要任何条件
@Override
public Predicate toPredicate(Root<Label) root,CriteriaQuery<?> query,CriteriaBuilder cb){
//new一个list集合,来存放所有的条件
List<Predicate> list = new ArrayList<>();
if(label.getname() != null && !"".equals(label.getname())){
//条件若是模糊查询
Predicate predicate = cb.like(root.get("name").as(String.class),"%"+label.getname()+"%");//where name like "%小%"
list.add(predicate);
}
if(){
//若不是模糊查询 ,则把上面的%%去掉
list.add();
}
//new一个数组作为最终返回值的条件
Predicate[] parr = new Predicate[list.size()];
//把list直接转成数组
parr = list.toArray(parr);
return cb.add(parr);// where name like "%小%" //多个条件下 and
}
},pageable);
}