public Page<XMGLFileTemplateDTO> findXMGLFileTemplateByConditions(XMGLFileTemplateDTO xmglFileTemplateDTO, Pageable pageable) throws MyException {
Page<XMGLFileTemplate> XMGLFileTemplateLists = this.xmglFileTemplateRepository.findAll(new Specification<XMGLFileTemplate>() {
@Override
public Predicate toPredicate(Root<XMGLFileTemplate> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicateList = new ArrayList<Predicate>();
//文档名称
if(StringUtils.isNotBlank(xmglFileTemplateDTO.getFileName())){
predicateList.add(criteriaBuilder.like(root.get("fileName"),"%"+xmglFileTemplateDTO.getFileName()+"%"));
}
//上传人员
if(StringUtils.isNotBlank(xmglFileTemplateDTO.getUploadUserName())){
predicateList.add(criteriaBuilder.like(root.get("rsglSysUser").get("name"),"%"+xmglFileTemplateDTO.getUploadUserName()+"%"));
}
//重要性
if(null != xmglFileTemplateDTO.getImportantLevel()){
predicateList.add(criteriaBuilder.equal(root.get("importantLevel"),xmglFileTemplateDTO.getImportantLevel()));
} //交易时间
if (null != xmglFileTemplateDTO.getUploadBeginTime() && null != xmglFileTemplateDTO.getUploadEndTime()) {
predicateList.add(criteriaBuilder.and(criteriaBuilder.greaterThanOrEqualTo(root.get("uploadTime"), DateUtils.parseDateTime(xmglFileTemplateDTO.getUploadBeginTime() + " 00:00:00")),
criteriaBuilder.lessThanOrEqualTo(root.get("uploadTime"), DateUtils.parseDateTime(xmglFileTemplateDTO.getUploadEndTime() + " 23:59:59"))));
} else if (null != xmglFileTemplateDTO.getUploadBeginTime()) {
predicateList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("uploadTime"),DateUtils.parseDateTime(xmglFileTemplateDTO.getUploadBeginTime() + " 00:00:00")));
} else if (null != xmglFileTemplateDTO.getUploadEndTime()) {
predicateList.add(criteriaBuilder.lessThanOrEqualTo(root.get("uploadTime"),DateUtils.parseDateTime(xmglFileTemplateDTO.getUploadEndTime() + " 23:59:59")));
}
criteriaQuery.where(predicateList.toArray(new Predicate[0]));
//更新时间倒序排序
criteriaQuery.orderBy(criteriaBuilder.desc(root.get("uploadTime")));
return null;
}
}, pageable);
List<XMGLFileTemplateDTO> xmglFileTemplateDTOs = new ArrayList<XMGLFileTemplateDTO>();
for (XMGLFileTemplate xmglFileTemplate : XMGLFileTemplateLists.getContent()) {//把分页对象转换为list对象 因为
XMGLFileTemplateDTO dto = new XMGLFileTemplateDTO();
BeanUtils.copyProperties(xmglFileTemplate, dto);//把接受前台参数的DTO和doman层的进行匹配拷贝
dto.setUploadUserName(xmglFileTemplate.getRsglSysUser().getName());
xmglFileTemplateDTOs.add(dto);//加入list集合
}
return new CustomPageImpl<XMGLFileTemplateDTO>(xmglFileTemplateDTOs, pageable,XMGLFileTemplateLists.getTotalElements());
}

services层,使用对象分页查询

SpringDataJPA的几个使用记录的更多相关文章

  1. 【java】spring-data-jpa 集成hibernate实现多条件分页查询

    初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...

  2. Spring-Data-JPA整合MySQL和配置

    一.简介 (1).MySQL是一个关系型数据库系统,是如今互联网公司最常用的数据库和最广泛的数据库.为服务端数据库,能承受高并发的访问量. (2).Spring-Data-Jpa是在JPA规范下提供的 ...

  3. 还在问跨域?本文记录js跨域的多种实现实例

    前言 众所周知,受浏览器同源策略的影响,产生了跨域问题,那么我们应该如何实现跨域呢?本文记录几种跨域的简单实现 前期准备 为了方便测试,我们启动两个服务,10086(就是在这篇博客自动生成的项目,请戳 ...

  4. SpringBoot系列——Spring-Data-JPA

    前言 jpa是ORM映射框架,更多详情,请戳:apring-data-jpa官网:http://spring.io/projects/spring-data-jpa,以及一篇优秀的博客:https:/ ...

  5. Spring-Data-Jpa环境配置与实际应用

    上次我们讲述了<Spring-Data-Jpa概述与接口>,接下来我们再讲讲Spring-Data-Jpa环境配置与实际应用. Spring-Data 方法定义规范与使用配置 简单条件查询 ...

  6. 使用Spring-data-jpa(2)(三十一)

    创建实体 创建一个User实体,包含id(主键).name(姓名).age(年龄)属性,通过ORM框架其会被映射到数据库表中,由于配置了hibernate.hbm2ddl.auto,在应用启动的时候框 ...

  7. Spring-data-jpa 学习笔记(二)

            通过上一篇笔记的,我们掌握了SpringData的相关概念及简单的用法.但上一篇笔记主要讲的是Dao层接口直接继承Repository接口,然后再自己定义方法.主要阐述了自定义方法时的 ...

  8. Spring-data-jpa 学习笔记(一)

    Spring家族越来越强大,作为一名javaWeb开发人员,学习Spring家族的东西是必须的.在此记录学习Spring-data-jpa的相关知识,方便后续查阅. 一.spring-data-jpa ...

  9. SpringDataJPA模糊查询遇到的坑

    遇到的情况:在做短信渠道管理添加时,先要去校验数据库中是否有该产线-短信类型-渠道的记录,如果存在就不添加. //在库中是否存在该记录 private boolean ifExistChannelCo ...

随机推荐

  1. sql总结一

    建表: select * from fruit; create table fruit ( id varchar(10) not null, name varchar(20) default '' n ...

  2. JavaWeb---总结(七)HttpServletResponse对象(一)

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. request和response对象即然代表请求和响应,那我们 ...

  3. 最短路径(Floyd)算法

    #include <stdio.h>#include <stdlib.h>/* Floyd算法 */#define VNUM 5#define MV 65536int P[VN ...

  4. glade2支持C++代码的输出(2)

    今天更新了一个BaseObject的代码:BaseObject.002.zip 同时将glade2生成C++代码的代码进行了调整,基于2.12.2的补丁为:cpp_out_2.patch.tar.xz ...

  5. linux命令:mkdir 命令详解

    linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录... 2.命令 ...

  6. dos命令复制当天生成的以日期为文件名的文件

    1.利用SqlServer的自动备份功能,将数据自动备份,备份出的文件格式如下:             db_backup_201001270930.bak 2.编辑bat脚本            ...

  7. live555库中的openRTSP实例

    一.openRTSP编译运行 a)windows下编译运行 还是以mediaServer作为服务端,openRTSP作为客户端 b)Linux下编译运行 转自http://kuafu80.blog.1 ...

  8. xhprof安装使用

    安装: 到pecl官网下载xhprof的最新版:http://pecl.php.net/package/xhprof wget http://pecl.php.net/get/xhprof-0.9.4 ...

  9. osharp3 操作日志之数据日志 控制增强

    osharp3 原来的数据日志,有配置文件中有这总开关,DataLoggingEnabled,原来的程序是,这个总开关关了,就无法记录数据日志了,,如果开了,,他不管记录不记录数据日志,系统都会存数据 ...

  10. JavaScript基础整理(1)

    最近读了<JavaScript权威指南>这本书,闲来无事对自认为重要的知识做了些整理,方便以后查阅. JavaScript中的最重要的类型就是对象,对象是名/值对的集合,或字符串到值映射的 ...