SpringDataJPA的几个使用记录

 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层,使用对象分页查询

时间: 2024-07-28 15:40:56

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

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

Spring家族越来越强大,作为一名javaWeb开发人员,学习Spring家族的东西是必须的.在此记录学习Spring-data-jpa的相关知识,方便后续查阅. 一.spring-data-jpa的简单介绍 SpringData : Spring 的一个子项目.用于简化数据库访问,支持NoSQL 和 关系数据存储.其主要目标是使数据库的访问变得方便快捷. SpringData 项目所支持 NoSQL 存储: MongoDB (文档数据库) Neo4j(图形数据库) Redis(键/值存储)

SpringDataJPA入门2

SpringDataJPA实体概述 JPA提供了一种简单高效的方式来管理Java对象(POJO)到关系型数据库的映射,此类Java对象成为JPA实体或简称实体.实体通常与底层数据库中的单个关系表相关联,每个实体的实例表示数据库表格中的某一行 SpringDataJPA实体管理器 实体管理器(EntityManager)用于管理系统中的实体,它是实体与数据库之间的桥梁,通过调用实体管理器的相关方法可以把实体持久化到数据库中,同时也可以把数据库中的记录打包成实体对象. 实体的生命周期: 从图中我们可

SpringDataJPA模糊查询

遇到的情况:在做短信渠道管理添加时,先要去校验数据库中是否有该产线-短信类型-渠道的记录,如果存在就不添加. //在库中是否存在该记录 private boolean ifExistChannelConfig(SmsChannelProductConfig smsChannelProductConfig){ ExampleMatcher matcher = ExampleMatcher.matching() //构建对象 .withMatcher("product", ExampleM

SpringDataJPA

Spring Data JPA 自从用了Spring Data JPA之后个人感觉比hibernate.mybatis好用太多了---SpringData JAP非常契合OOP思想.如:设计模式的开放-封闭原则.依赖倒转原则.单一职责.迪米特法则等等,也是OOP非常非常核心的东西(按住Ctrl+鼠标左键点击蓝色的可以查看对应模式)...我的GitHub上最近在更新一个Spring.SpringDataJPA.shiro框架整合的一个小项目,有兴趣可以瞅瞅:下面是我转载的一篇SpringDataJ

Spring-data-jpa的简单使用

记录是为了更好的成长! 接触springDataJpa以后, 感觉用起来还是可以的,习惯了mybatis的灵活,刚入手会觉得有难度,这里不说springdatajpa是什么,怎么用,主要分享心得 1.查询 条件查询 按jpa的规则在方法中拼接字段属性即可 //按姓名查询 List<Entity> findByuserNameEquals(String name); //按用户和密码查询 List<Entity> findByuserNameEqualsAndpassWordEqua

springDataJPA和mybatis的整合 之springdata编写sql的5种方式

Jpa实现数据库的CRUD 需求 使用SpringDataJpa实现数据库的CRUD 开发步骤 ? 1 创建MAVEN 工程 ? 2 添加依赖 ? mysql ? c3p0 ? hibernate ? springDataJpA ? spring相关jar包 ? 3 创建配置文件 ? 4 创建实体类 ? 5 创建Dao 创建接口 即可 要求接口继承 JpaRspository接口 ? 6 编写测试程序 ? 1 初始花啊spring 容器 ? 2 从容器中获得Dao代理对象 ? 3 使用Dao 实

SpringDataJPA第三天讲义

第1章     Specifications动态查询 有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor接口查询.相比JPQL,其优势是类型安全,更加的面向对象. 1 package org.springframework.data.jpa.repository; 2 3 import java.util.List; 4 import org.springframewor

SpringBoot使用AOP记录请求日志和异常日志

本文基础WEB环境使用SpringBoot及Spring-Data-Jpa构建 关于SpringBoot及JPA用法本文不再过多讨论,下面是引入的jar: 起步依赖 web及aop依赖 jpa依赖 mysql驱动 本文着重AOP的使用,你也可以使用自己构建的环境 由于本文中使用的JPA,因此首先创建保存日志及保存异常的实体类,如果你使用的是Mybatis,则需要首先创建表然后根据表来逆向生成实体类 保存日志的实体类: 日志实体 保存异常的实体类: 异常实体 接下来我们定义一个Operation注

老男孩Linux运维第41期20170917开班第四周学习重点课堂记录

第1章 必知必会文件 配置文件位置 该文件作用 /etc/sysconfig/network-scripts/ifcfg-eth0 第一块网卡的配置文件 同setup中的network /etc/resolv.conf 客户端DNS配置文件,优先级低于网卡配置文件 /etc/hosts 主要作用是定义IP地址和主机名的映射关系(域名解析),是一个映射IP地址和主机名的规定 /etc/sysconfig/network 用于配置hostname和networking /etc/fstab 开机自动