一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Data JPA 復雜/多條件組合分頁查詢

Spring Data JPA 復雜/多條件組合分頁查詢

2020-09-07 09:24王曉東1號 Java教程

本文主要介紹了Spring Data JPA 復雜/多條件組合分頁查詢的相關資料。具有很好的參考價值。下面跟著小編一起來看下吧

話不多說,請看代碼:

?
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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色偷偷亚洲男人 | 玩50岁四川熟女大白屁股直播 | ts视频在线观看 | 国产亚洲一区二区三区 | 亚洲第一区在线观看 | 99视频观看 | 日韩制服丝袜在线观看 | 精品视频 九九九 | 日韩视频在线精品视频免费观看 | 亚洲国产精品成 | 91嫩草国产在线观看免费 | 精品第一国产综合精品蜜芽 | chinese军人@gay | 无限资源在线观看播放 | 欧美老人与小伙子性生交 | 国产精品亚洲片在线观看麻豆 | 贰佰麻豆剧果冻传媒一二三区 | 四虎精品成人免费观看 | 亚洲精品视频免费在线观看 | 女教师巨大乳孔中文字幕免费 | 成人免费公开视频 | 北岛玲亚洲一区在线观看 | 久久国产视频网站 | 香蕉国产精品偷在线播放 | chinaese中国女人厕所小便 | 日韩欧美一区二区三区免费看 | www.99精品视频在线播放 | 亚洲经典激情春色另类 | 日韩小视频在线观看 | 无码乱人伦一区二区亚洲 | 日韩不卡一区二区 | 欧美一级级a在线观看 | 亚洲国产视频一区 | 成人依依网 | 91精品国产亚一区二区三区 | 国产麻豆精品原创 | 日本三级欧美三级人妇英文 | 久久这里只有精品无码3D | 女主被当众调教虐np | 欧美国产日韩在线 | 久久青草免费91线频观看站街 |