使用spring data jpa帶分頁按時間段多條件查詢

話不多說,直接貼代碼

//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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章