SpringBoot學習筆記10——spring-data-jpa之分頁查詢
阿新 • • 發佈:2018-11-12
今天我們來學習一下spring-data-jpa的分頁查詢的實現
在上次初探JPA之後我們接下來學習分頁查詢,本篇部落格是接上一篇的,如果有需要了解jpa配置的話可以看上一篇部落格https://blog.csdn.net/lp840312696/article/details/83549937
分頁查詢比較簡單,只需要定義一個分頁類即可,話不多說直接上程式碼。
service程式碼
package com.youyou.address.service; import com.youyou.address.dao.ContacterDao; import com.youyou.address.dao.ContacterEORepo; import com.youyou.address.entity.ContacterEO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.querydsl.QPageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional public class ContacterService { @Autowired private ContacterDao dao; @Autowired private ContacterEORepo contacterEORepo; public void insertOne(ContacterEO contacterEO) { dao.insertOne(contacterEO); } public List<ContacterEO> findAll() { return dao.findAll(); } /** * 儲存聯絡人 * * @param contacterEO */ public void saveOne(ContacterEO contacterEO) { contacterEORepo.save(contacterEO); } /** * 分頁查詢 * @param page * @return */ public Page<ContacterEO> findByPage(PageRequest page) { Page<ContacterEO> all = contacterEORepo.findAll(page ); return all; } }
controller程式碼如下:
package com.youyou.address.controller; import com.youyou.address.entity.ContacterEO; import com.youyou.address.service.ContacterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @Api(description = "聯絡人介面") @RestController @RequestMapping(value = "/contacter") public class ContacterController { @Autowired private ContacterService service; @ApiOperation(value = "新增") @GetMapping("/add") public ContacterEO add(ContacterEO contacterEO) { System.out.println("新增一個聯絡人"); service.saveOne(contacterEO); return contacterEO; } @ApiOperation(value = "查詢所有") @GetMapping("/findAll") public List<ContacterEO> findAll() { return service.findAll(); } @ApiOperation(value = "分頁查詢") @GetMapping("/findByPage") public Page<ContacterEO> findByPage(int pageNo, int size ,Sort.Direction direction) { PageRequest page = PageRequest.of(pageNo, size, Sort.by(direction, "name")); return service.findByPage(page); } }
核心程式碼就是
PageRequest page = PageRequest.of(pageNo, size, Sort.by(direction, "name"));
pageNo:頁碼(從0開始)
size:每頁條數
direction:排序標識,即ASC或DESC
name:需要排序的欄位