Spring data JPA中使用Specifications动态构建查询

有时咱们在查询某个实体的时候,给定的条件是不固定的,这是咱们就须要动态 构建相应的查询语句,在JPA2.0中咱们能够经过Criteria接口查询,JPA criteria查询.相比JPQL,其优点是类型安全,更加的面向对象.而在Spring data JPA中相应的接口是JpaSpecificationExecutor,这个接口基本是围绕着Specification接口来定义的。 Specification接口中只定义了以下一个方法:web

咱们只须要重写这个方法便可,相关知识请自行查阅JPA Criteria查询 spring

过滤条件sql

1:过滤条件会被应用到SQL语句的FROM子句中。在criteria 查询中,查询条件经过Predicate或Expression实例应用到CriteriaQuery对象上。安全

2:这些条件使用 CriteriaQuery .where 方法应用到CriteriaQuery 对象上less

3:CriteriaBuilder也做为Predicate实例的工厂,经过调用CriteriaBuilder 的条件方法( equal,notEqual, gt, ge,lt, le,between,like等)建立Predicate对象。ide

4:复合的Predicate 语句能够使用CriteriaBuilder的and, or andnot 方法构建。post

相关代码以下,在这个例子中咱们定义了2个类Articel和User类ui

Article:spa

User:code

其中user和article是一对多的关系,是单向的

封装的查询实体SearchArticle

下面是查询方法

其中的 ArticleRepository接口以下,spring data jpa不须要你本身实现dao的接口

经过以上的步骤,咱们就能构建相应的查询sql了,使用这个接口要对JPA2.0中Criteria查询有必定的了解

相关文章
相关标签/搜索