spring-data-jpa動態查詢
阿新 • • 發佈:2018-11-13
靜態查詢
extends JpaRepository<Stu,Integer>
動態查詢
extends JpaSpecificationExecutor<Stu>
@Repository
public interface StuDao extends JpaRepository<Stu,Integer>, JpaSpecificationExecutor<Stu> {
}
JpaSpec的詳情
public interface JpaSpecificationExecutor<T> { T findOne(Specification<T> var1); List<T> findAll(Specification<T> var1); Page<T> findAll(Specification<T> var1, Pageable var2); List<T> findAll(Specification<T> var1, Sort var2); long count(S
Specification<T>介面詳情
public interface Specification<T> {
Predicate toPredicate(Root<T> var1, CriteriaQuery<?> var2, CriteriaBuilder var3);
}
程式碼
@Autowired StuDao stuDao; @Test public void spec() { Specification<Stu> stuSpecification = new Specification<Stu>() { @Override public Predicate toPredicate(Root<Stu> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { Predicate p1 = criteriaBuilder.equal(root.get("name"),"小明"); Predicate p2 = criteriaBuilder.equal(root.get("msg"),"資訊"); Predicate p3 = criteriaBuilder.and(p1,p2); return p3; } }; //動態查詢 stuDao.findOne(stuSpecification); }