1、pom.xml引用插件
<!--分页启动器-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
2、创建分页用的实体类
@Data
public class BaseDTO {
//目前第几页
@TableField(exist = false, select = false)
private Integer pageNow;
//每页几条
@TableField(exist = false, select = false)
private Integer pageSize;
public Integer getStart(){
if(pageNow == null || pageSize == null ){
return null;
}
return (pageNow - 1) * pageSize;
}
}
并且让需要分页的实体继承该类
3、创建TableResult工具类
@Data
@Accessors(chain = true)//开启链式编程
public class TableResult<T> {
//查询出的记录
private List<T> rows;
//总条数
private long totalCount;
//总页数
private long pageCount;
public void setPageCount(Integer pageSize){
if(pageSize == null){
return;
}
if(totalCount % pageSize == 0){
this.pageCount = totalCount / pageSize ;
}else{
this.pageCount = totalCount / pageSize + 1 ;
}
}
}
4、直接在ServiceImpl中实现分页
@Override
public Result getAdminList(Integer page) {
PageHelper.startPage(page,5);//page是第几页,由前端传输
List<User> adminList = userMapper.getAdminList();
TableResult<User> table = new TableResult<>();
Integer integer = userMapper.adminNum();//获取总数
table.setRows(adminList).setTotalCount(integer).setPageCount(5);
return Result.ok("").put("adminList",adminList).put("table",table);
}
5、在前端中的引用
使用的是bootstrap的分页组件
<nav aria-label="Page navigation" style="text-align: center;">
<ul class="pagination" >
<li>
<a href="javascript:;" @click="btnChange(1)" title="首页" aria-label="Previous">
<span aria-hidden="true" >«</span>
</a>
</li>
<li v-for="(item,i) of table.pageCount"><a href="javascript:;" @click="btnChange(item)">{{item}}</a></li>
<li>
<a href="javascript:;" @click="btnChange(table.pageCount)" title="末页" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
组件如下图所示
前端传输操作如下代码
btnChange:function (i){
$.ajax({
type: "POST",
data:{'page':i},
url: "http://localhost:8001/admin/getAdminList",
success: function (r) {
vm.adminList = r.adminList
vm.table = r.table
}
})
}