您的位置:首页 > 编程语言 > Java开发

SpringData JPA 实现动态条件查询

2017-08-25 15:26 886 查看

SpringData JPA 实现动态条件查询(包含分页、排序)

1、repository层接口 继承JpaSpecificationExecutor
public interface UserRepository extends JpaRepository<User, Integer>,JpaSpecificationExecutor<User>{
}
注意:
Page<T> findAll(Specification<T> spec, Pageable pageable);  //分页按条件查询List<T> findAll(Specification<T> spec);    //不分页按条件查询 
2、service层重写toPredicate方法
	public Page<User> getUserByIf(User user,Integer page,Integer size){return userRepository.findAll(new Specification<User>() {@Overridepublic Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {List<Predicate> predicates = new ArrayList<>();if(StringUtils.isNotBlank(user.getName())){predicates.add(builder.like(root.get("name"), "%"+user.getName()+"%")); like}if(user.getAge()!=null){predicates.add(builder.greaterThanOrEqualTo(root.get("age"), user.getAge()));//  >=}if(user.getId()!=null){predicates.add(builder.lessThanOrEqualTo(root.get("id"), user.getId()));//   <=}return builder.and(predicates.toArray(new Predicate[predicates.size()]));}}, new PageRequest(page, size, Direction.ASC, "id"));}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: