前后端分页的简单实现
- Vue.js Element-UI
 
- SpringBoot Jpa
 
基本效果图如下:

1.前端基于Element的分页组件
Element分页组件:
1 2 3 4 5 6 7 8 9
   | <div class="block" style="margin-top:15px;">       <el-pagination align='center'       @current-change="handleCurrentChange" // 改变页码时触发的方法,还有很多其他的触发事件       :current-page="currentPage"   // 当前页       :page-size="pageSize"         // 分页大小       layout="total, prev, pager, next"     // 分页条的功能(主题) 可定制       :total="total">   // 元素总数量       </el-pagination>    </div>
   | 
定义数据参数:
1 2 3 4 5
   | tableData:[],  // 元素列表 currentPage: 1, // 当前页码 total: 0,  // 总条数 pageSize: 10,   // 每页的数据条数 ....
   | 
请求后端数据
1 2 3 4 5 6 7 8 9 10
   | // get page to_getPage(){     var self = this;     this.$axios.get("/member?currentPage=" + self.currentPage + "&pageSize=" + self.pageSize).then((response)=>{         let data = response.data;         console.info(data);         self.tableData = data.content;         self.total = data.totalElements;     }); },
   | 
 
2.后端基于Jpa的简单分页方法
1 2 3 4 5 6 7
   | @GetMapping("/member") Page<Member> getmembers(Integer pageSize, 						Integer currentPage){ 	// 生成一个分页器,包括当前页,大小,排序规则 	Pageable pageable = PageRequest.of(currentPage,pageSize,Sort.by("memId")); 	return memberRepository.findAll(pageable); }
  | 
 
3.更多关于Jpa分页的步骤知识点:
- 创建实体类
 
- 定义Repository并继承
PagingAndSortingRepository或其子类 如:JpaRepository 
1 2 3 4 5 6 7 8 9
   | // 相应约定好的分页方法就送上门来了 public interface ArticleRepository extends PagingAndSortingRepository<Article,Long> {      //查询article表的所有数据,传入Pageable分页参数,不需要自己写SQL     Page<Article> findAll(Pageable pageable);     //根据author字段查询article表数据,传入Pageable分页参数,不需要自己写SQL     Page<Article> findByAuthor(String author, Pageable pageable);     //根据author字段和title字段,查询article表数据,传入Pageable分页参数,不需要自己写SQL     Slice<Article> findByAuthorAndTitle(String author, String title, Pageable pageable); }
   | 
 
- 生成分页器 实现分页
 
1 2 3 4 5 6 7 8
   | // 查询第一页(从0开始)的数据,每页10条数据 Pageable pageable = PageRequest.of(0, 10);   //第一页 //Pageable pageable = PageRequest.of(1, 10);  //第二页 //Pageable pageable = PageRequest.of(2, 10);  // 第三页 //数据库操作获取查询结果 Page<Article> articlePage = articleRepository.findAll(pageable); //将查询结果转换为List List<Article> articleList = articlePage.getContent();
   | 
 
- 实现排序
 
1 2 3 4 5 6 7 8 9
   | // 简单排序 articleRepository.findAll(Sort.by("createTime"));
  // 复合排序 articleRepository.findAll(Sort.by("author").ascending()                         .and(Sort.by("createTime").descending()));
  // 分页排序 Pageable pageable = PageRequest.of(0, 10,Sort.by("createTime"));
   | 
 
- 关于分页器的返回对象Page继承自Slice,这里介绍一些方法内容
 
1 2 3 4 5 6 7 8 9 10 11 12 13
   | List <T>  getContent(); //获取元素数组
  Pageable  getPageable(); //当前切片的分页信息
  boolean  hasContent(); //是否有查询结果?
  boolean  isFirst();  //是否是第一个切片
  boolean  isLast();  //是否是最后一个切片
  Pageable nextPageable(); // 下一个切片的分页信息
  Pageable previousPageable(); // 上一个切片的分页信息
   | 
 
- Page的方法
 
1 2 3 4 5
   | //总页数 int getTotalPages();
  //总数据条数 long getTotalElements();
   |