Java简单高效实现分页功能

网友投稿 359 2022-11-24


Java简单高效实现分页功能

今天想说的就是能够在我们操作数据库的时候更简单的更高效的实现,现成的CRUD接口直接调用,方便快捷,不用再写复杂的sql,带吗简单易懂,话不多说上方法

1、Utils.java工具类中的方法

/** 2 * 获取Sort

*

* @param direction - 排序方向

* @param column - 用于排序的字段

*/

public static Sort getSort(String direction,String column){

Sort sort = null;

if(column == null || column == "") return null;

if(direction.equals("asc")||direction.equals("ASC")){

sort = Sort.by(Sort.Direction.ASC,column);

}else {

sort = Sort.by(Sort.Direction.DESC,column);

}

return sort;

}

/**

* 获取分页

* @param pageNumber 当前页

* @param pageSize 页面大小

* @param sort 排序;sort为空则不排序只分页

* @return 分页对象

*/

public static Pageable getPageable(int pageNumber,int pageSize,Sort sort){

if(sort!=null){

return PageRequest.of(pageNumber,pageSize,sort);

}

return PageRequest.of(pageNumber,pageSize);

}

/**

* 判断String是否为空

* @param str

* @return

*/

private static boolean isEmpty(String str){

if(str.equals(nullhttp://)||str.equals("")) return true;

return false;

}

2、实现类

这里查询相关参数是前端传的,所以用默认值了,查询条件可以是多条件动态,排序也可以是动态的,只要传排序字段和排序方向对号入座即可。

@Override

public Page findAll() {

// 创建测试对象

User user = new User();

user.setName("1");

Sort sort = Utils.getSort("asc","name");

Pageable pageable = Utils.getPaghttp://eable(0,5,sort);

// 调用组装查询条件方法

Specification spec = getSpecification(user);

return userRepository.findAll(spec,pageable);

}

/**

* 组装查询条件

* @param user -查询相关对象

* @return 返回组装过的多查询条件

*/

private Specification getSpecification(User user) {

Specification specification = new Specification() {

@Override

public Predicate toPredicate(Root root, CriteriaQuery> criteriaQuery, CriteriaBuilder criteriaBuilder) {

List predicates = new ArrayList<>();

// 判断条件不为空

if(!Utils.isEmpty(user.getName())){

predicates.add(criteriaBuilder.like(root.get("name"),user.getName()));

}

return criteriaQuery.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();

}

};

return specification;

}

3.reposithttp://ory类中这么写

@Repository

public interface UserRepository extends JpaRepository, JpaSpecificationExecutor {}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java策略模式实现简单购物车功能
下一篇:Java并发编程如何降低锁粒度并实现性能优化
相关文章

 发表评论

暂时没有评论,来抢沙发吧~