spring-data-jpa Specification构建动态ql
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相关推荐
- Spring Data JPA Specification(规范)实现复杂查询
目录 持久化 API 接口概述 JpaSpecificationExecutor 常用 API JPA Specification 编码示例 持久化 API 接口概述 1.JPA 持久化 API 接口 ...
- Spring Data JPA Specification多表关联查询
需求:有一个流量计的设备,流量计有一个所属罐区id,想要通过所属罐区查到所关联的这个罐区的编码以及名称. 1.流量计实体类: 主要是给流量计实体添加了以下属性,通过tank_area_id关联: pa ...
- Spring data jpa Specification查询关于日期的范围搜索
代码: 时间格式化类型: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat s ...
- Spring Data JPA REST Query QueryDSL
案例概述 在本教程中,我们将研究使用Spring Data JPA和Querydsl为REST API构建查询语言. 在本系列的前两篇文章中,我们使用JPA Criteria和Spring Data ...
- 【Spring Data JPA自学笔记二】初识Spring Data JPA
文章目录 Spring Data JPA是什么? Spring Data JPA的配置 配置pom.xml 配置applicationContext.xml Spring Data JPA的使用 Sp ...
- spring data jpa封装specification实现简单风格的动态查询
github:https://github.com/peterowang/spring-data-jpa-demo 单一实体的动态查询: @Servicepublic class AdvancedUs ...
- JPA Spring Data JPA详解
JPA & Spring Data JPA 一.JPA 1. JPA是什么 JPA(Java Persistence API)Java持久化 API,是一套基于ORM思想的规范. ORM(Ob ...
- Spring Data JPA入门
见:http://sishuok.com/forum/blogPost/list/7000.html Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框 ...
- Spring Data JPA 从入门到精通~JpaSpecificationExecutor示例
新建两个实体 @Entity(name = "UserInfoEntity") @Table(name = "user_info", schema = &quo ...
最新文章
- git merge 和 git rebase详解
- .Net Core扩展 SharpPlugs简单上手
- boost::is_convertible相关的测试程序
- 第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍
- elementui 可伸缩侧边栏_ElementUI 侧边栏伸缩布局
- VS Code 新扩展,面向 Web 开发人员调试 DOM
- 2016考试计算机知识基础题库,2016年计算机二级公共基础知识基础练习题演练(6)...
- 软件工程 第三章 需求分析
- 回文字符串,回文链表
- 卷积法求解系统的零状态响应_信号与系统题
- 使用TortoiseSVN将文件回退到某个版本
- 毕业后,重装电脑系统,我的资料备份
- Window环境下MQTT安装
- Linux内核设计与实现 Robert Love
- html打开ppt自动播放,ppt文件怎么打开就可以全屏自动播放
- 2021年最新抓取微博所有图片,所有视频,所有评论,保存数据库excel
- 企业软件投资:逆势穿越周期,重回黄金时代
- 四旋翼无人机学习第19节--allgero的板框导入,网表导入
- 【数据结构】二叉搜索树的上/下界
- eas报错日记_EAS新建数据中心报错