概述
分页插件 PageHelper 的相关文档
github:
https://github.com/pagehelper/Mybatis-PageHelper
码云:
https://gitee.com/free/Mybatis_PageHelper
官网:
https://pagehelper.github.io/
1、添加 pom.xml 依赖
在版本信息地方,可以填写最新版本
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
2、在 MyBatis.xml 中配置拦截器插件
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
<property name="helperDialect" value="mysql"/>
<!-- 如果需要配置参数,参照文档配置 -->
</plugin>
</plugins>
3、使用 PageInfo 方式封装分页信息
//从第一页开始查询,连续查10条数据,默认查询总数count,startPage紧跟着的第一个select方法会被分页
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectAll();
//用PageInfo对结果进行包装,其中参数5是页码导航连续显示的页数
PageInfo page = new PageInfo(list, 5);
4、PageInfo 中的分页属性
pageNum当前页
pageSize每页的数量
size当前页的数量
orderBy排序
startRow当前页面第一个元素在数据库中的行号
endRow当前页面最后一个元素在数据库中的行号
total总记录数(在这里也就是查询到的用户总数)
pages总页数 (这个页数也很好算,每页5条,总共有11条,需要3页才可以显示完)
list结果集
prePage前一页
nextPage下一页
isFirstPage是否为第一页
isLastPage是否为最后一页
hasPreviousPage是否有前一页
hasNextPage是否有下一页
navigatePages导航页码数
navigatepageNums所有导航页号
navigateFirstPage导航第一页
navigateLastPage导航最后一页
firstPage第一页
lastPage最后一页
5、包装数据,方便浏览器解析
Msg(这个适合分页插件无关的,主要是对于cotroller返回数据,进行包装,更方便浏览器解析)
public class Msg {
//表示状态码
private int code;
//提示信息
private String msg;
//要返回给浏览器的数据
private Map<String,Object> extend = new HashMap<String,Object>();
//在controller中调用success方法,返回Msg对象
public static Msg success(){
Msg result = new Msg();
result.setCode(100);
result.setMsg("处理成功!");
return result;
}
public static Msg fail(){
Msg result = new Msg();
result.setCode(200);
result.setMsg("处理失败");
return result;
}
//把pageInfo中的数据保存到Msg中,一并返回
public Msg add(String key,Object value){
this.getExtend().put(key, value);
return this;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Map<String, Object> getExtend() {
return extend;
}
public void setExtend(Map<String, Object> extend) {
this.extend = extend;
}
}
在 controller 中返回分页信息:
@RequestMapping("/emps")
@ResponseBody
public Msg getEmpsWithJson(@RequestParam(value = "pn", defaultValue = "1") Integer pn){
//分页之前传入需要分页大小,从第几页开始
PageHelper.startPage(pn, 5);
List<Employee> emps = employeeService.getAll();
//pegeInfo封装了分页是所有信息, 5代表连续显示的页数
PageInfo page = new PageInfo(emps, 5);
return Msg.success().add("pageInfo", page);
}
在 jsp 页面通过 ajax 获取分页信息:
function to_page(pn) {
$.ajax({
url : "/emps",
data : "pn="+pn,
type : "GET",
success : function (result) {
//当前页
result.extend.pageInfo.pageNum;
}
});
}
6、尾巴
这是国人写的一款分页插件,很厉害的嘛,又让我感觉自己是一个代码的组装者,和搬砖没什么区别,但这也是必须要做的。继续干。
7、欢迎关注 JavaArtisan 公众号,每周获得新知识
最后
以上就是难过彩虹为你收集整理的MyBatis 分页插件 PageHelper 简单使用流程7、欢迎关注 JavaArtisan 公众号,每周获得新知识的全部内容,希望文章能够帮你解决MyBatis 分页插件 PageHelper 简单使用流程7、欢迎关注 JavaArtisan 公众号,每周获得新知识所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复