jpa之org.springframework.data.jpa.domain.Specification
最近生了场重病,有半年多没写博客了,经历了这么多,发现技术上不用太执著,有些东西明白大致意思就行了,没必要扣得太么细,用多少扣多少就行。人生短暂,要把时间用在更有意义上的事情上。
JPA是JAVA的一套持久层的规范,设计者通过一些接口和方法和基础类,定义了一套完成持久化数据的标准结构
Specification接口主要定义了如何来构造一个查询条件
package org.springframework.data.jpa.domain; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; /** * Specification in the sense of Domain Driven Design. * * @author Oliver Gierke * @author Thomas Darimont */ public interface Specification<T> { /** * Creates a WHERE clause for a query of the referenced entity in form of a {@link Predicate} for the given * {@link Root} and {@link CriteriaQuery}. * * @param root 查询的业务对象 * @param query 定义一个查询的元数据
* @CriteriaBuilder cb 根据元数据构建出查询对象
* @returnPredicate 可以理解成是个简单或者复合的查询条件对象
*/ Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb); }