public Page<AliScdnTask> refreshList(AliScdnIn aliScdnIn) {
if("all".equals(aliScdnIn.getObjectType())){
aliScdnIn.setObjectType(null);
}
Specification<AliScdnTask> specification = new Specification<AliScdnTask>() {
@Override
public Predicate toPredicate(Root<AliScdnTask> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<>();
//条件查询匹配对象
if(StringUtils.isNoneBlank(aliScdnIn.getObjectType())){
Predicate predicate = criteriaBuilder.equal(root.get("objectType").as(String.class),aliScdnIn.getObjectType());
predicates.add(predicate);
}
//条件查询,模糊查询匹配对象
if(StringUtils.isNoneBlank(aliScdnIn.getUrl())){
Predicate predicate = criteriaBuilder.like(root.get("objectPath").as(String.class),"%"+aliScdnIn.getUrl()+"%");
predicates.add(predicate);
}
//条件查询,区间匹配,开始时间到结束时间
if(aliScdnIn.getStartTime()!=null&&aliScdnIn.getEndTime()!=null){
Predicate less = criteriaBuilder.lessThanOrEqualTo(root.get("creationTime").as(Date.class),aliScdnIn.getEndTime());
predicates.add(less);
Predicate greater = criteriaBuilder.greaterThanOrEqualTo(root.get("creationTime").as(Date.class),aliScdnIn.getStartTime());
predicates.add(greater);
}
//将集合转换为数组,放入构建对象中
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
}
};
//传入当前页与每页数
Pageable pageable = PageRequest.of(aliScdnIn.getPage()-1,aliScdnIn.getLimit());
//将构建对象与当前页参数放入findAll中查询,直接实现,就会再dao层生成接口
return aliScdnTaskDao.findAll(specification,pageable);
}
springdata jpa
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- jpa是一种orm规范,也就是api 而hibernate之类的框架则是jpa的具体实现 springdata j...
- 1. 概述 Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问技术,包括非关系...
- 1、pom引入 2、创建表 sql语句: 3、配置application.yml 4、写实体类 5、写DAO接口 ...