話不多說,直接貼代碼
//JpaRepository滿足基礎的一些查詢,JpaSpecificationExecutor可進行範圍查詢
/**
* 基礎數據庫操作類
*/
@NoRepositoryBean
public interface BaseRepository<T extends BaseEntity>
extends JpaRepository<T, Long>, JpaSpecificationExecutor<T> {}
service層查詢列表方法添加,返回數據類型爲Page
//排序規則和分頁
Specification<PurchaseHandlingCharge> specification = new Specification<PurchaseHandlingCharge>() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) {
String startTime = “2019-01-01 00:00:00”;
String endTime = “2019-12-31 23:59:59”;
//增加篩選條件
Predicate predicate = cb.conjunction();
predicate.getExpressions().add(cb.equal(root.get("available").as(String.class), 1));
//模糊查找
predicate.getExpressions.add(cb.like(root.get("name").as(String.class), "%" + name + "%"));
//起始日期
if (startTime != null && !startTime.trim().equals("")) {
predicate.getExpressions().add(cb.greaterThanOrEqualTo(root.get("createTime").as(String.class), startTime));
}
//結束日期
if (endTime != null && !endTime.trim().equals("")) {
predicate.getExpressions().add(cb.lessThanOrEqualTo(root.get("createTime").as(String.class), endTime));
}
return predicate;
}
}
Page all = baseRepository.findAll(specification, pageable);
return all;