springJpa Specification 时间查询范围
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;
}
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)