SSM之使用mybatis中第三方分页插件——PageHelper实现分页

一、PageHelper 分页插件简介

  1. PageHelper是MyBatis中非常方便的第三方分页插件
  2. 官方文档:
    https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
  3. 我们可以对照官方文档的说明,快速的使用插件
    二、PageHelper的使用步骤
  4. 导入相关包pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar
  5. 在MyBatis-config全局配置文件中配置分页插件
<plugins>
	<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
  1. 创建一个util类叫pageUtil,将我们页码的html信息进行封装,并且存放在builder中
package com.atguigu.ssm.util;

import javax.servlet.http.HttpServletRequest;

import com.atguigu.ssm.bean.Emp;
import com.github.pagehelper.PageInfo;

/**
 * 首页 上一页 1 2 3 4 5 下一页 末页
 *
 */
public class PageUtil {

	public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) {

		String path = request.getContextPath() + "/";
		StringBuilder builder = new StringBuilder();

		// 拼接首页
		builder.append("<a href='" + path + "emps/1'>首页</a>");
		builder.append("&nbsp;&nbsp;");

		// 拼接上一页
		if (pageInfo.isHasPreviousPage()) {
			builder.append("<a href='" + path + "emps/" + pageInfo.getPrePage() + "'>上一页</a>");
			builder.append("&nbsp;&nbsp;");
		} else {
			builder.append("上一页");
			builder.append("&nbsp;&nbsp;");
		}

		// 拼接页码
		int[] nums = pageInfo.getNavigatepageNums();
		for (int i : nums) {
			if (i == pageInfo.getPageNum()) {
				builder.append("<a style='color:red;' href='" + path + "emps/" + i + "'>" + i + "</a>");
				builder.append("&nbsp;&nbsp;");
			} else {
				builder.append("<a href='" + path + "emps/" + i + "'>" + i + "</a>");
				builder.append("&nbsp;&nbsp;");
			}
		}

		// 拼接下一页
		if (pageInfo.isHasNextPage()) {
			builder.append("<a href='" + path + "emps/" + pageInfo.getNextPage() + "'>下一页</a>");
			builder.append("&nbsp;&nbsp;");
		} else {
			builder.append("下一页");
			builder.append("&nbsp;&nbsp;");
		}

		// 拼接尾页
		builder.append("<a href='" + path + "emps/" + pageInfo.getPages() + "'>尾页</a>");
		builder.append("&nbsp;&nbsp;");
		System.out.println(builder);
		return builder.toString();

	}
}

我这里将builder进行了输出,输出结果是html代码如下:

<a href='/SSM/emps/1'>首页</a>
&nbsp;&nbsp;上一页&nbsp;&nbsp;
<a style='color:red;' href='/SSM/emps/1'>1</a>
&nbsp;&nbsp;<a href='/SSM/emps/2'>2</a>&nbsp;&nbsp;<a href='/SSM/emps/3'>3</a>&nbsp;&nbsp;
<a href='/SSM/emps/4'>4</a>
&nbsp;&nbsp;<a href='/SSM/emps/2'>下一页</a>
&nbsp;&nbsp;<a href='/SSM/emps/4'>尾页</a>
&nbsp;&nbsp;

所得的结果是根据controller层中设置的值所得出
4) Controller层中一些分页方法的设置

  • 查询之前通过PageHelper.startPage(页码,条数)设置分页信息,该方法返回Page对象
    PageHelper.startPage(pageNum, 3);
  • 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑
    PageInfo pageInfo = new PageInfo<>(allEmp, 5);
    注意:<>中的类型要和传入的类型一致,第二个参数5代表要显示的页码数,第一个参数代表所查询到的类型的集合。
  • String page = PageUtil.getPageInfo(pageInfo, request);
    调用写好的Util类,得到返回值builder;
  • map.put(“page”, page);把得到的html代码放到作用域中
  • controller层中总体代码如下:
@Controller
public class EmpController {

	@Autowired
	private EmpService empService;

	@RequestMapping(value = "/emps/{pageNum}", method = RequestMethod.GET)
	public String getAllEmp(Map<String, Object> map, @PathVariable("pageNum") Integer pageNum,
			HttpServletRequest request) {
		PageHelper.startPage(pageNum, 3);
		List<Emp> allEmp = empService.getAllEmp();
		PageInfo<Emp> pageInfo = new PageInfo<>(allEmp, 5);
		String page = PageUtil.getPageInfo(pageInfo, request);
		map.put("empList", allEmp);
		map.put("page", page);
		return "list";
	}
}
  • 前端通过EL标签{page}将html代码引入

至此,分页已经可以使用了;我这里的代码是省略了service和dao层的代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值