Jpa实现动态分页查询

Repository层
public interface UserRepository extends JpaSpecificationExecutor,JpaRepository<User,Long>{
}
Util包
public class UserUtil {

/**
 * 判断字符串是否为空
 * @param str
 * @return true-不为空  false-为空
 */
public static boolean isNotBlank(String str){
    if(str == null || str.length()<=0){
        return false;
    }else{
        return true;
    }
}

}
Impl包
@Component
public class UserSpecification {

public Specification<User> where(final String address) {
    return new Specification<User>() {
        @Override
        public Predicate toPredicate(Root<User> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
            List<Predicate> predicates = new ArrayList<>();
            //用户地址模糊查询
            if (UserUtil.isNotBlank(address)) {
                predicates.add(criteriaBuilder.like(root.get("address"), "%" + address + "%"));
            }
            return criteriaQuery.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
        }

    };

}

}
Service层
public Page addressList(String address,Integer page,Integer size){
PageRequest pageRequest = PageRequest.of(page,size,new Sort(Sort.Direction.DESC,“age”));
Specification userQuery = userSpecification.where(address);
System.out.println(address);
return userRepository.findAll(userQuery,pageRequest);
}
Controller
public Page list2(@ApiParam(value=“用户地址”,name=“address”,required = true)@RequestParam String address,
@ApiParam(value=“起始行”,name=“page”,required = true)@RequestParam Integer page,
@ApiParam(value=“每页行数”,name=“size”,required = true)@RequestParam Integer size){
System.out.println(address);
System.out.println(page);
System.out.println(size);
return userService.addressList(address,page,size);
}

猜你喜欢

转载自blog.csdn.net/weixin_40944832/article/details/87094682
今日推荐