这么久啦,今天突然醒悟xaingqi第一次写博客
接触JPA后自我的一个总结,只是会讲究用,至于原理还是很多都不知道 ,有什么不对的地方,欢迎大家指出修改
废话不多说 直接上...
要想实现分页+多条件查询 首先dao层得继承 JpaRepository<T, Serializable>
控制层:
如上图所示 我们要通过new 得到一个pageable 正是通过pageable 来完成 分页的实现,可以看到又截个参数 根据自身需要 传入参数
接下来 我们就要进行多条件的查询的操作...
实现层:
Specification<Merchant> specification = new Specification<Merchant>() {
@Override
public Predicate toPredicate(Root<Merchant> root,CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
if(merchant.getAccount()!=null){
//对字段的查询
list.add(cb.equal(root.get("display").as(Integer.class), merchant.getDisplay()));
list.add(cb.like(root.get("account").as(String.class), "%" + merchant.getAccount() + "%"));
Predicate[] predicates = new Predicate[list.size()];
predicates = list.toArray(predicates);
return cb.and(predicates);
}
}
};
return merchantRepository.findAll(specification,pageable);
如上代码所示:
我们要通过CriteriaBuilder cb 来进行一系列的操作 like equal 等等 没做深入研究
最后由继承JpaRepository<T, Serializable> 的merchantRepository 调用方法findAll(specification,pageable),
第一个参数多条件查询参数 第二个就是分页参数
多的我也整不来啦,就只有这点货,
每天坚持一丢丢,进步一丢丢...