使用SpringDataJPA如何實現(xiàn)多條件的分頁查詢

使用Spring Data JPA如何實現(xiàn)多條件的分頁查詢?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

河口ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

話不多說,請看代碼:

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) &#63; pageNum : "1";
    pageSize = TextUtils.isNotBlank(pageSize) &#63; pageSize : "10";
    // 分頁時的總頁數(shù)、每頁條數(shù)、排序方式、排序字段
    Pageable StuPageable = PageUtils.buildPageRequest(Integer.valueOf(pageNum),Integer.valueOf(pageSize), new Sort(Direction.DESC, new String[] { "xmzbsj","lstProinfo.proId"}));
    // 按照條件進(jìn)行分頁查詢,根據(jù)StuPageable的分頁方式
     Page<Weekly> StuPage = proWeeklyDao.findAll(new Specification<Weekly>() {
      public Predicate toPredicate(Root<Weekly> root, CriteriaQuery<&#63;> 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);
     // 按照條件進(jìn)行分頁查詢
    resultMap = PageUtils.getPageMap(StuPage);
    return resultMap;
  }

buildPageRequest()方法,導(dǎo)入的包,下面是自己寫的方法

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 當(dāng)前頁
   * @param pageSize 每頁條數(shù)
   * @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)

/**
   * 封裝分頁數(shù)據(jù)到Map中。
   */
  public static Map<String, Object> getPageMap(Page<&#63;> objPage) {
    Map<String, Object> resultMap = new HashMap<String, Object>();
    resultMap.put(Constants.PAGE_RESULT_LIST, objPage.getContent()); // 數(shù)據(jù)集合,符合查詢條件的所有記錄數(shù)據(jù)
    resultMap.put(Constants.PAGE_TOTAL_NUM, objPage.getTotalElements()); // 總記錄數(shù)
    resultMap.put(Constants.PAGE_TOTAL_PAGE, objPage.getTotalPages()); // 總頁數(shù)
    resultMap.put(Constants.PAGE_NUM, objPage.getNumber()); // 當(dāng)前頁碼
    resultMap.put(Constants.PAGE_SIZE, objPage.getSize()); // 每頁顯示數(shù)量
    return resultMap;
  }

看完上述內(nèi)容,你們掌握使用Spring Data JPA如何實現(xiàn)多條件的分頁查詢的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

本文題目:使用SpringDataJPA如何實現(xiàn)多條件的分頁查詢
鏈接地址:http://muchs.cn/article24/ghijje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站維護(hù)、網(wǎng)站建設(shè)標(biāo)簽優(yōu)化、網(wǎng)站營銷、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)