Java简单高效实现分页功能
今天想说的就是能够在我们操作数据库的时候更简单的更高效的实现,现成的CRUD接口直接调用,方便快捷,不用再写复杂的sql,带吗简单易懂,话不多说上方法
1、Utils.java工具类中的方法
/**2*获取Sort * *@paramdirection-排序方向 *@paramcolumn-用于排序的字段 */ publicstaticSortgetSort(Stringdirection,Stringcolumn){ Sortsort=null; if(column==null||column=="")returnnull; if(direction.equals("asc")||direction.equals("ASC")){ sort=Sort.by(Sort.Direction.ASC,column); }else{ sort=Sort.by(Sort.Direction.DESC,column); } returnsort; } /** *获取分页 *@parampageNumber当前页 *@parampageSize页面大小 *@paramsort排序;sort为空则不排序只分页 *@return分页对象 */ publicstaticPageablegetPageable(intpageNumber,intpageSize,Sortsort){ if(sort!=null){ returnPageRequest.of(pageNumber,pageSize,sort); } returnPageRequest.of(pageNumber,pageSize); } /** *判断String是否为空 *@paramstr *@return */ privatestaticbooleanisEmpty(Stringstr){ if(str.equals(null)||str.equals(""))returntrue; returnfalse; }
2、实现类
这里查询相关参数是前端传的,所以用默认值了,查询条件可以是多条件动态,排序也可以是动态的,只要传排序字段和排序方向对号入座即可。
@Override publicPagefindAll(){ //创建测试对象 Useruser=newUser(); user.setName("1"); Sortsort=Utils.getSort("asc","name"); Pageablepageable=Utils.getPageable(0,5,sort); //调用组装查询条件方法 Specification spec=getSpecification(user); returnuserRepository.findAll(spec,pageable); } /** *组装查询条件 *@paramuser-查询相关对象 *@return返回组装过的多查询条件 */ privateSpecification getSpecification(Useruser){ Specification specification=newSpecification (){ @Override publicPredicatetoPredicate(Root root,CriteriaQuery>criteriaQuery,CriteriaBuildercriteriaBuilder){ List predicates=newArrayList<>(); //判断条件不为空 if(!Utils.isEmpty(user.getName())){ predicates.add(criteriaBuilder.like(root.get("name"),user.getName())); } returncriteriaQuery.where(predicates.toArray(newPredicate[predicates.size()])).getRestriction(); } }; returnspecification; }
3.repository类中这么写
@Repository
publicinterfaceUserRepositoryextendsJpaRepository,JpaSpecificationExecutor {}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。