MyBatis使用pagehelper进行分页

使用pagehelper分页的原理是:

通过MyBatis的插件原理(类似web里的filter拦截器),在mapper配置文件将pagehelper注册为MyBatis的插件,从而进行分页

1.通过maven引入pagehelper依赖:

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.11</version>
</dependency>

2.在MyBatis的mapper配置文件将pagehelper注册为MyBatis的插件

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

3.pagehelper的用法:

private void selectAllUsers(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {

        String num=request.getParameter("num");

        if(null==num)
        {
            num="1";
        }

        // Page PageInfo

        Page<?> page=PageHelper.startPage(Integer.parseInt(num),5);  //设置第几条记录开始,多少条记录为一页

        //通过userService获取user的信息,其sql语句为"select * from user" 但因pagehelp已经注册为插件,所以pagehelp会在原sql语句上增加limit,从而实现分页
        List<Person> persons=userService.getAllUsersBypageHelper();  //因而获得的是分好页的结果集
         
        PageInfo<?> pageHelper=page.toPageInfo(); //获取页面信息的对象,里面封装了许多页面的信息 如:总条数,当前页码,需显示的导航页等等

        request.setAttribute("persons",persons);
        request.setAttribute("pagehelper",pageHelper);

        request.getRequestDispatcher("/persons.jsp").forward(request,response);

    }

相关推荐