话不多说,请看代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public Map<String, Object> getWeeklyBySearch( final Map<String, String> serArgs, String pageNum, String pageSize) throws Exception { // TODO Auto-generated method stub Map<String,Object> resultMap= new HashMap<String, Object>(); // 判断分页条件 pageNum = TextUtils.isNotBlank(pageNum) ? pageNum : "1" ; pageSize = TextUtils.isNotBlank(pageSize) ? pageSize : "10" ; // 分页时的总页数、每页条数、排序方式、排序字段 Pageable StuPageable = PageUtils.buildPageRequest(Integer.valueOf(pageNum),Integer.valueOf(pageSize), new Sort(Direction.DESC, new String[] { "xmzbsj" , "lstProinfo.proId" })); // 按照条件进行分页查询,根据StuPageable的分页方式 Page<Weekly> StuPage = proWeeklyDao.findAll( new Specification<Weekly>() { public Predicate toPredicate(Root<Weekly> root, CriteriaQuery<?> query, CriteriaBuilder cb) { List<Predicate> lstPredicates = new ArrayList<Predicate>(); if (TextUtils.isNotBlank(serArgs.get( "xmmc" ))) { lstPredicates.add(cb.like(root.get( "lstProinfo" ).get( "xmmc" ).as(String. class ), "%" + serArgs.get( "xmmc" ) + "%" )); } if (TextUtils.isNotBlank(serArgs.get( "xmzbqssj" ))) { lstPredicates.add(cb.greaterThanOrEqualTo(root.get( "xmzbsj" ).as(String. class ),serArgs.get( "xmzbqssj" ))); } if (TextUtils.isNotBlank(serArgs.get( "xmzbjzsj" ))) { lstPredicates.add(cb.lessThanOrEqualTo(root.get( "xmzbsj" ).as(String. class ),serArgs.get( "xmzbjzsj" ))); } Predicate[] arrayPredicates = new Predicate[lstPredicates.size()]; return cb.and(lstPredicates.toArray(arrayPredicates)); } }, StuPageable); // 按照条件进行分页查询 resultMap = PageUtils.getPageMap(StuPage); return resultMap; } |
buildPageRequest()方法,导入的包,下面是自己写的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; * @param pageNum 当前页 * @param pageSize 每页条数 * @param sortType 排序字段 * @param direction 排序方向 */ public static PageRequest buildPageRequest( int pageNum, int pageSize, String sortType, String direction) { Sort sort = null ; if (!TextUtils.isNotBlank(sortType)) { return new PageRequest(pageNum - 1 , pageSize); } else if (TextUtils.isNotBlank(direction)) { if (Direction.ASC.equals(direction)) { sort = new Sort(Direction.ASC, sortType); } else { sort = new Sort(Direction.DESC, sortType); } return new PageRequest(pageNum - 1 , pageSize, sort); } else { sort = new Sort(Direction.ASC, sortType); return new PageRequest(pageNum - 1 , pageSize, sort); } } public static PageRequest buildPageRequest( int pageNum, int pageSize, String sortType) { return buildPageRequest(pageNum, pageSize, sortType, null ); } |
getPageMap()方法:
JPA的Page也是集合,获取Page集合里的值,最后获取到的这些(key,value)
1
2
3
4
5
6
7
8
9
10
11
12
|
/** * 封装分页数据到Map中。 */ public static Map<String, Object> getPageMap(Page<?> objPage) { Map<String, Object> resultMap = new HashMap<String, Object>(); resultMap.put(Constants.PAGE_RESULT_LIST, objPage.getContent()); // 数据集合,符合查询条件的所有记录数据 resultMap.put(Constants.PAGE_TOTAL_NUM, objPage.getTotalElements()); // 总记录数 resultMap.put(Constants.PAGE_TOTAL_PAGE, objPage.getTotalPages()); // 总页数 resultMap.put(Constants.PAGE_NUM, objPage.getNumber()); // 当前页码 resultMap.put(Constants.PAGE_SIZE, objPage.getSize()); // 每页显示数量 return resultMap; } |
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!
原文链接:http://www.cnblogs.com/Donnnnnn/p/5857229.html