话不多说,请看代码:
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