springJpa Specification 时间查询范围

public PageModel<FileEntity> getFiles(FileDto fileDto) {
        // 获取当前页码
        Integer pageNo = fileDto.getCurPage();
        // 获取页码大小
        Integer pageSize = fileDto.getPageSize();
        // 保证当前页码合法性
        pageNo = (null == pageNo || pageNo <= 0) ? 0 : (pageNo - 1);
        // 默认一页十条数据
        pageSize = (null == pageSize) ? 10 : pageSize;
        // 分页查询,字段排序
        Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by("id").descending());
        // 字段查询,模糊匹配
        Specification<FileEntity> specification = (root, query, criteriaBuilder) -> {
            List<Predicate> predicates = new ArrayList<>();
            // 文件名称
            // root.get("fileName") 是实体字段属性,不是数据库字段
            String fileName = fileDto.getFileName();
            if(StringUtils.isNotBlank(fileName)){
                predicates.add(criteriaBuilder.like(root.get("fileName"), "%" + fileName + "%"));
            }

            // 文件入库状态
            Integer fileSaveStatus = fileDto.getFileSaveStatus();
            if(null != fileSaveStatus){
                predicates.add(criteriaBuilder.equal(root.get("fileSaveStatus"), fileSaveStatus));
            }

            // 解析时间 大于等于
            Date startFileAnalysisTime = fileDto.getStartFileAnalysisTime();
            if(null != startFileAnalysisTime){
                predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("fileAnalysisTime").as(Date.class), startFileAnalysisTime));
            }
            // 解析时间 小于等于
            Date endFileAnalysisTime = fileDto.getEndFileAnalysisTime();
            if(null != endFileAnalysisTime){
                predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("fileAnalysisTime").as(Date.class), endFileAnalysisTime));
            }

            //返回查询条件
            return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
        };
        Page<FileEntity> fileEntitys = fileServiceDao.findAll(specification, pageable);
        // Page<AppReportMappingEntity> pageAll = appReportMappingDao.findAll(specification, pageable);
        return new PageModel(fileEntitys.getTotalElements(), fileEntitys.getTotalPages(), pageNo, pageSize, fileEntitys.getContent());
    }
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageModel<T> {
    private long totalRows;
    private long totalPages;
    private int curPage;
    private int pageSize;
    private List<T> result;

    public static PageModel transModel(Page page, List content) {
        PageModel pageModel = new PageModel();
        pageModel.setTotalRows(page.getTotalElements());
        pageModel.setTotalPages(page.getTotalPages());
        pageModel.setCurPage(page.getPageable().getPageNumber() + 1);
        pageModel.setPageSize(page.getPageable().getPageSize());
        pageModel.setResult(content);
        return pageModel;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值