1.先导依赖
<!-- pagehelper 分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
2.一个普通的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentExt extends Student{
// 以下2个也是实体类 大家自定义实体类即可 (谁让我写的是多表呢)
private Institute institutes;
private ClassTable classTable;
}
3.自定义一个方法
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
List<StudentExt> findAll();
}
4.Controller
@ApiOperation("查询全部")
@GetMapping("/findAll") // 默认显示第一页
public String findAll(Model model,@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum){
// pageNum:当前第几页, 3:展示几条数据
PageHelper.startPage(pageNum, 3);
List<StudentExt> all = studentMapper.findAll();
PageInfo<StudentExt> studentExtPageInfo = new PageInfo<>(all);
// 携带参数
model.addAttribute("all",all);
model.addAttribute("page",studentExtPageInfo);
return "main";
}
5.HTML 页面的赋值
<tr th:each="all:${all}">
<td th:text="${all.sNum}"></td>
<td th:text="${all.sName}"></td>
<td th:text="${all.gender}"></td>
<td th:text="${#dates.format(all.birthday,'yyyy-MM-dd')}"></td>
<td th:text="${all.phone}"></td>
<td th:text="${all.classTable.cName}"></td>
<td th:text="${all.institutes.iName}"></td>
<td>
<input th:class="delButton" type="button" value="删除">
<input th:class="updButton" type="button" value="修改">
</td>
</tr>
</tr>
<tr>
<td colspan="8">
<br>
当前第<span th:text="${page.pageNum}"></span>页
<br>
<button><a th:href="@{/findAll(pageNum=1)}">首页</a></button>
<button><a th:href="@{/findAll(pageNum=${page.hasPreviousPage}?${page.prePage}:1)}">上一页</a></button>
<button><a th:href="@{/findAll(pageNum=${page.hasNextPage}?${page.nextPage}:${page.pages})}">下一页</a></button>
<button><a th:href="@{/findAll(pageNum=${page.pages})}">尾页</a></button>
</td>
</tr>
效果图如下

PageHelper分页插件的PageInfo的属性参数,成员变量的解释
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集(每页显示的数据)
private List<T> list;
//第一页
private int firstPage;
//前一页
private int prePage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;