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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值