jpa多个条件查询

jpa实体仓库

public interface StudentRepository extends
        JpaRepository<Student, String>,
        JpaSpecificationExecutor<Student>{
}

jpa查询条件封装

	/**
	*查询条件拼装
	*/
    private Specification<student> query(String id, String name) {
        return (Specification<student>) (root, criteriaQuery, criteriaBuilder) -> {
            List<javax.persistence.criteria.Predicate> predicates = new ArrayList<>();
            if (StringUtils.isNotBlank(id)) {
                predicates.add(criteriaBuilder.equal(root.get("id"), id));
            }
            if (StringUtils.isNotBlank(name)) {
                predicates.add(criteriaBuilder.like(root.get("name"), name));
            }
            return criteriaQuery.where(predicates.toArray(new javax.persistence.criteria.Predicate[predicates.size()])).getRestriction();
        };
    }
	

分页查询使用

 PageRequest pageable = PageRequest.of(1, 10); 
 Specification<BaseStation> specification = query(id, name);
 studentRepository.findAll(specification, pageable);

你可能感兴趣的:(jpa多个条件查询)