zoukankan      html  css  js  c++  java
  • 扩展-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();
            
        }
        
    }
  • 相关阅读:
    GoF23种设计模式之行为型模式之中介者模式
    GoF23种设计模式之行为型模式之备忘录模式
    GoF23种设计模式之行为型模式之解释器模式
    GoF23种设计模式之行为型模式之观察者模式
    GoF23种设计模式之行为型模式之状态模式
    GoF23种设计模式之行为型模式之策略模式
    GoF23种设计模式之行为型模式之模板方法
    GoF23种设计模式之行为型模式之访问者模式
    电子地图/卫星地图下载并转存为jpg图片
    webapi swagger学习笔记
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12970361.html
Copyright © 2011-2022 走看看