扩展-PageHelper分页插件

1、PageHelper 分页插件简介
  1) PageHelper是MyBatis中非常方便的第三方分页插件
  2) 官方文档:
    https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
  3) 我们可以对照官方文档的说明,快速的使用插件

2、PageHelper的使用步骤
  1) 导入相关包pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar
  2) 在MyBatis全局配置文件中配置分页插件(注意插入顺序位置)

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

  3) 使用PageHelper提供的方法进行分页
  4) 可以使用更强大的PageInfo封装返回结果

3、Page对象的使用

  1) 在查询之前通过 PageHelper.startPage(页码,条数) 设置分页信息,该方法返回Page对象

@Test
    public void testPageHelper()  throws Exception{
        SqlSessionFactory ssf = getSqlSessionFactory();
        SqlSession session = ssf.openSession();
        try {
            EmployeeMapper mapper = 
                      session.getMapper(EmployeeMapper.class);
            //设置分页信息
            Page<Object> page = PageHelper.startPage(9, 1);
            List<Employee> emps = mapper.getAllEmps();
            for (Employee employee : emps) {
                System.out.println(employee);
            }
            System.out.println("=============获取分页相关的信息=================");
            System.out.println("当前页: " + page.getPageNum());
            System.out.println("总页码: " + page.getPages());
            System.out.println("总条数: " + page.getTotal());
            System.out.println("每页显示的条数: " + page.getPageSize());
        } finally {
            session.close();
        }
    }

4、PageInfo对象的使用
  1) 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑

@Test
    public void testPageHelper1()  throws Exception{
        SqlSessionFactory ssf = getSqlSessionFactory();
        SqlSession session = ssf.openSession();
        try {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            //设置分页信息
            Page<Object> page = PageHelper.startPage(9, 1);
            List<Employee> emps = mapper.getAllEmps();
            // 
            PageInfo<Employee> info  = new PageInfo<>(emps,5);
            for (Employee employee : emps) {
                System.out.println(employee);
            }
            System.out.println("=============获取详细分页相关的信息=================");
            System.out.println("当前页: " + info.getPageNum());
            System.out.println("总页码: " + info.getPages());
            System.out.println("总条数: " + info.getTotal());
            System.out.println("每页显示的条数: " + info.getPageSize());
            System.out.println("是否是第一页: " + info.isIsFirstPage());
            System.out.println("是否是最后一页: " + info.isIsLastPage());
            System.out.println("是否有上一页: " + info.isHasPreviousPage());
            System.out.println("是否有下一页: " + info.isHasNextPage());
            
            System.out.println("============分页逻辑===============");
            int [] nums = info.getNavigatepageNums();
            for (int i : nums) {
                System.out.print(i +" " );
            }
        } finally {
            session.close();
        }
    }

分页实现: 首页 上一页 1 2 3 4 5 下一页 末页

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;");
        
        return builder.toString();
        
    }
    
}

猜你喜欢

转载自www.cnblogs.com/lemonzhang/p/12970361.html