本文主要是介绍SpringData Jpa实现分页功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
controller调用
/*** 生成分页数据 顺序ASC** @param pageNo* @param pageSize* @param sortColumnName 以哪一列进行排序* @return*/public static Pageable getPageableASC(String pageNo, String pageSize, String... sortColumnName) {if (ObjectUtils.isEmpty(pageNo)) {pageNo = DEFAULT_PAGE_NO;}if (ObjectUtils.isEmpty(pageSize)) {pageSize = DEFAULT_PAGE_SIZE;}Pageable pageable = null;if (ObjectUtils.isEmpty(sortColumnName)) {// 获取PageRequest对象 index:页码 从0开始 size每页容量pageable = PageRequest.of(Integer.parseInt(pageNo) - 1, Integer.parseInt(pageSize));} else {// Sort.Direction是个枚举有ASC(升序)和DESC(降序)Sort.Direction sort = Sort.Direction.ASC;// PageRequest继承于AbstractPageRequest并且实现了Pageable// 获取PageRequest对象 index:页码 从0开始 size每页容量 sort排序方式 "id"->properties 以谁为准排序pageable = PageRequest.of(Integer.parseInt(pageNo) - 1, Integer.parseInt(pageSize), sort, sortColumnName);}return pageable;}/*** 生成分页数据 顺序DESC** @param pageNo* @param pageSize* @param sortColumnName 以哪一列进行排序* @return*/public static Pageable getPageableDESC(String pageNo, String pageSize, String... sortColumnName) {if (ObjectUtils.isEmpty(pageNo)) {pageNo = DEFAULT_PAGE_NO;}if (ObjectUtils.isEmpty(pageSize)) {pageSize = DEFAULT_PAGE_SIZE;}Pageable pageable = null;if (ObjectUtils.isEmpty(sortColumnName)) {// 获取PageRequest对象 index:页码 从0开始 size每页容量pageable = PageRequest.of(Integer.parseInt(pageNo) - 1, Integer.parseInt(pageSize));} else {// Sort.Direction是个枚举有ASC(升序)和DESC(降序)Sort.Direction sort = Sort.Direction.DESC;// PageRequest继承于AbstractPageRequest并且实现了Pageable// 获取PageRequest对象 index:页码 从0开始 size每页容量 sort排序方式 "id"->properties 以谁为准排序pageable = PageRequest.of(Integer.parseInt(pageNo) - 1, Integer.parseInt(pageSize), sort, sortColumnName);}return pageable;}
//分页信息
Pageable pageable = Utils.getPageableASC(pageNo, pageSize, "id");
service中调用
/*** 查询复查列表** @param clientId* @param day* @param pageable* @return*/
@Override
public Object findDayList(String clientId, String day, Pageable pageable) {Page<List<Map<String, Object>>> pages = null;try {if (ObjectUtils.isEmpty(clientId) && !ObjectUtils.isEmpty(day)) {pages = mReviewTimeDao.findAllReviewsByDay(day, pageable);} else if (!ObjectUtils.isEmpty(clientId) && ObjectUtils.isEmpty(day)) {pages = mReviewTimeDao.findAllReviewsByClientId(clientId, pageable);} else {pages = mReviewTimeDao.findAllReviewsByClientIdAndDay(clientId, day, pageable);}} catch (Exception e) {throw new ServiceException(e.getCause().getCause().getMessage());}return ObjectUtils.isEmpty(pages) ? pages : pages.getContent();
}
Repository接口
public interface XDMReviewTimeDao extends JpaRepository<XDMReviewTimePoJo, Long> {@Query(nativeQuery = true,value = "select a.* , b.c_clientname as clientName , b.c_phone1 as clientPhone from XDM_Review_time a left join client_list b on a.c_clientid = b.id where a.c_appointment_day = ?1 ",countQuery = "select count(*) from XDM_Review_time where c_appointment_day = ?1")Page<List<Map<String, Object>>> findAllReviewsByDay(String day, Pageable pageable);@Query(nativeQuery = true,value = "select a.* , b.c_clientname as clientName , b.c_phone1 as clientPhone from XDM_Review_time a left join client_list b on a.c_clientid = b.id where a.c_clientid = ?1 ",countQuery = "select count(*) from XDM_Review_time where c_clientid = ?1")Page<List<Map<String, Object>>> findAllReviewsByClientId(String clientId, Pageable pageable);@Query(nativeQuery = true,value = "select a.* , b.c_clientname as clientName , b.c_phone1 as clientPhone from XDM_Review_time a left join client_list b on a.c_clientid = b.id where a.c_clientid = ?1 and a.c_appointment_day = ?2 ",countQuery = "select count(*) from XDM_Review_time where c_clientid = ?1 and c_appointment_day = ?2 ")Page<List<Map<String, Object>>> findAllReviewsByClientIdAndDay(String clientId, String day, Pageable pageable);Long countByCCodeAndCSign(String code, String sign);
}
这篇关于SpringData Jpa实现分页功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!