1.持久层继承JpaSpecificationExecutor

@Repository
public interface DailyBillingRepository extends PagingAndSortingRepository<DailyBilling, Long>, JpaSpecificationExecutor<DailyBilling> {}
复制代码

2.JpaSpecificationExecutor 提供的方法:

public interface JpaSpecificationExecutor<T> {T findOne(Specification<T> spec);List<T> findAll(Specification<T> spec);Page<T> findAll(Specification<T> spec, Pageable pageable);List<T> findAll(Specification<T> spec, Sort sort);long count(Specification<T> spec);
}
复制代码

调用 :

 public Page<DailyBilling> getList(Integer page, Integer rows,String beginTime,String endTime,String result){//Specification创建动态sql//Root<ExportSubsidyPersonnel> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilderSpecification<DailyBilling> specification= (root, query, cb) -> {Predicate predicate = cb.conjunction();if (StringHelper.isNotBlank(beginTime) && StringHelper.isNotBlank(endTime)){// sql ==》 billData between beginTime and endTimepredicate.getExpressions().add(cb.between(root.<Date>get("billData"), DateHelper.getDate(beginTime), DateHelper.getDate(endTime)));}if (StringHelper.isNotBlank(result) && !result.equals("2")){// sql ==》 differenceAmount = 0  或者 differenceAmount <> 0Predicate p = null;if ("1".equals(result)){p = cb.equal(root.<BigDecimal>get("differenceAmount"),BigDecimal.ZERO);}if ("0".equals(result)){p = cb.notEqual(root.<BigDecimal>get("differenceAmount"),BigDecimal.ZERO);}predicate.getExpressions().add(p);}return predicate;};return dailyBillingRepository.findAll(specification,new PageRequest(page,rows));}
复制代码

CriteriaBuilder接口提供了操作sql的基本语句,可直接调用。

spring-data-jpa Specification构建动态ql相关推荐

  1. Spring Data JPA Specification(规范)实现复杂查询

    目录 持久化 API 接口概述 JpaSpecificationExecutor 常用 API JPA Specification 编码示例 持久化 API 接口概述 1.JPA 持久化 API 接口 ...

  2. Spring Data JPA Specification多表关联查询

    需求:有一个流量计的设备,流量计有一个所属罐区id,想要通过所属罐区查到所关联的这个罐区的编码以及名称. 1.流量计实体类: 主要是给流量计实体添加了以下属性,通过tank_area_id关联: pa ...

  3. Spring data jpa Specification查询关于日期的范围搜索

    代码: 时间格式化类型: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat s ...

  4. Spring Data JPA REST Query QueryDSL

    案例概述 在本教程中,我们将研究使用Spring Data JPA和Querydsl为REST API构建查询语言. 在本系列的前两篇文章中,我们使用JPA Criteria和Spring Data ...

  5. 【Spring Data JPA自学笔记二】初识Spring Data JPA

    文章目录 Spring Data JPA是什么? Spring Data JPA的配置 配置pom.xml 配置applicationContext.xml Spring Data JPA的使用 Sp ...

  6. spring data jpa封装specification实现简单风格的动态查询

    github:https://github.com/peterowang/spring-data-jpa-demo 单一实体的动态查询: @Servicepublic class AdvancedUs ...

  7. JPA Spring Data JPA详解

    JPA & Spring Data JPA 一.JPA 1. JPA是什么 JPA(Java Persistence API)Java持久化 API,是一套基于ORM思想的规范. ORM(Ob ...

  8. Spring Data JPA入门

    见:http://sishuok.com/forum/blogPost/list/7000.html Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框 ...

  9. Spring Data JPA 从入门到精通~JpaSpecificationExecutor示例

    新建两个实体 @Entity(name = "UserInfoEntity") @Table(name = "user_info", schema = &quo ...

最新文章

  1. git merge 和 git rebase详解
  2. .Net Core扩展 SharpPlugs简单上手
  3. boost::is_convertible相关的测试程序
  4. 第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍
  5. elementui 可伸缩侧边栏_ElementUI 侧边栏伸缩布局
  6. VS Code 新扩展,面向 Web 开发人员调试 DOM
  7. 2016考试计算机知识基础题库,2016年计算机二级公共基础知识基础练习题演练(6)...
  8. 软件工程 第三章 需求分析
  9. 回文字符串,回文链表
  10. 卷积法求解系统的零状态响应_信号与系统题
  11. 使用TortoiseSVN将文件回退到某个版本
  12. 毕业后,重装电脑系统,我的资料备份
  13. Window环境下MQTT安装
  14. Linux内核设计与实现 Robert Love
  15. html打开ppt自动播放,ppt文件怎么打开就可以全屏自动播放
  16. 2021年最新抓取微博所有图片,所有视频,所有评论,保存数据库excel
  17. 企业软件投资:逆势穿越周期,重回黄金时代
  18. 四旋翼无人机学习第19节--allgero的板框导入,网表导入
  19. 【数据结构】二叉搜索树的上/下界
  20. eas报错日记_EAS新建数据中心报错

热门文章

  1. 踩坑之旅:springboot+vue+webpack项目实战(一)
  2. [整理+原创]ubuntu Thunderbird Mail设置自动提醒
  3. 如何在SSIS的脚本组件中访问变量
  4. web.xml与index.html
  5. 一张图片学Python
  6. 职场透视:我们都是猪八戒?
  7. Android手机摇一摇的实现SensorEventListener
  8. 动态生成Repeater
  9. 第一章 C++ primer Plus
  10. 1.1图像处理的概念