介绍
使用弹簧数据JPA如何实现多条件的分页查询?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>话不多说,请看代码:强>
公共Map<字符串,Object>String> getWeeklyBySearch(最终Map<字符串;serArgs, 字符串pageNum,字符串pageSize)抛出异常{//TODO自动生成方法存根 Object> Map<字符串;resultMap=new HashMap<字符串,Object> ();//判断分页条件 pageNum=TextUtils.isNotBlank (pageNum), # 63;pageNum:“1“;; 页大?TextUtils.isNotBlank(页大小),# 63;页大小:“10“;;//分页时的总页数,每页条数,排序方式,排序字段 可分页StuPageable=PageUtils.buildPageRequest (Integer.valueOf (pageNum) Integer.valueOf(页大小),新型(方向。DESC、新String [] {“xmzbsj",“lstProinfo.proId"}));//按照条件进行分页查询,根据StuPageable的分页方式 PageStuPage=proWeeklyDao。findAll(新的Specification () { 公共谓词toPredicate (Root 根,CriteriaQuery<及# 63;比;查询,querybuilder cb) { List lstPredicates=new ArrayList (); 如果(TextUtils.isNotBlank (serArgs.get (“xmmc"))) { lstPredicates.add (cb.like (root.get (“lstProinfo") . get (“xmmc")。as (String.class),“%”;+ serArgs.get (“xmmc") +“%”); } 如果(TextUtils.isNotBlank (serArgs.get (“xmzbqssj"))) { lstPredicates.add (cb.greaterThanOrEqualTo (root.get (“xmzbsj")。as (String.class) serArgs.get (“xmzbqssj"))); } 如果(TextUtils.isNotBlank (serArgs.get (“xmzbjzsj"))) { lstPredicates.add (cb.lessThanOrEqualTo (root.get (“xmzbsj")。as (String.class) serArgs.get (“xmzbjzsj"))); } 谓词[]arrayPredicates=new谓词[lstPredicates.size ()); 返回cb.and (lstPredicates.toArray (arrayPredicates)); } },StuPageable);//按照条件进行分页查询 resultMap=PageUtils.getPageMap (StuPage); 返回resultMap; }
<>强buildPageRequest()方法,导入的包,下面是自己写的方法强>
进口org.springframework.data.domain.Page; 进口org.springframework.data.domain.PageRequest; 进口org.springframework.data.domain.Sort; 进口org.springframework.data.domain.Sort.Direction; * @param pageNum当前页 * @param页大小每页条数 * @param sortType排序字段 * @param方向排序方向 */公共静态PageRequest buildPageRequest (sortType int pageNum, int页大小,字符串,字符串方向){ 这种类型=零; 如果(! TextUtils.isNotBlank (sortType)) { 返回新PageRequest (pageNum - 1页大小); }else if (TextUtils.isNotBlank(方向)){ 如果(Direction.ASC.equals(方向)){=新型(方向。ASC, sortType); 其他}{=新型(方向。DESC sortType); } 返回新PageRequest (pageNum - 1页大小排序); 其他}{=新型(方向。ASC, sortType); 返回新PageRequest (pageNum - 1页大小排序); } } 公共静态PageRequest buildPageRequest (int pageNum int页大小,字符串sortType) { 页大小,返回buildPageRequest (pageNum sortType, null); }
<>强getPageMap()方法:强>
JPA的页面也是集合,获取页面集合里的值,最后获取到的这些(键值)
/* * *封装分页数据到映射中。 */公共静态Map<字符串,Object>getPageMap (Page<及# 63;比;objPage) { Object> Map<字符串;resultMap=new HashMap<字符串,Object> (); resultMap.put(常量。PAGE_RESULT_LIST objPage.getContent ());//数据集合,符合查询条件的所有记录数据 resultMap.put(常量。PAGE_TOTAL_NUM objPage.getTotalElements ());//总记录数 resultMap.put(常量。PAGE_TOTAL_PAGE objPage.getTotalPages ());//总页数 resultMap.put(常量。PAGE_NUM objPage.getNumber ());//当前页码 resultMap.put(常量。页大小,objPage.getSize ());//每页显示数量 返回resultMap; }
看完上述内容,你们掌握使用弹簧数据JPA如何实现多条件的分页查询的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!