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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久热在线视频精品1 | 国产精品久久现线拍久青草 | 校园全黄h全肉细节文 | 香蕉久久综合 | 免费尤物视频 | 色老板成人永久免费视频 | m3u8久久国产精品影院 | 日本aaaaa高清免费看 | 天堂网在线网站成人午夜网站 | 99久久免费看精品国产一区 | 纲手被强喷水羞羞漫画 | 2019午夜福合集高清完整版 | 教室眠催白丝美女校花 | 日朝欧美亚洲精品 | 波多野结衣家庭教师 | 国产精品青青在线观看香蕉 | 精品国产免费第一区二区 | 男人懂得网站 | 男人的天堂va | 欧美在线高清 | 美女被灌浣肠失禁视频 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 99在线在线视频免费视频观看 | 精品亚洲综合久久中文字幕 | 久久中文字幕免费高清 | 交欧美 | 被强迫变性翘秘书 | 香蕉免费一区二区三区 | 校草太大了h | 亚洲精品中文字幕第一区 | 国产亚洲精aa在线观看香蕉 | 日本黄色高清视频网站 | 无码人妻视频又大又粗欧美 | 调教老师肉色丝袜的故事 | 俄罗斯妈妈235 | 日韩福利一区 | 色老板在线免费观看 | 白丝爆动漫羞羞动漫网站 | sese在线观看| 美女扒开胸罩露出奶 | 交换朋友夫妇3中文字幕 |