pageHelper如何分页

pageHelper如何分页

http://img1.sycdn.imooc.com//climg/5c22ec57000169f609030324.jpg

代码中的获取到的persons是数据表中所有的person信息吗,

如果是,直接传到request作用域中,那么在页面中遍历的requestScope.persons应该是所有的person

http://img1.sycdn.imooc.com//climg/5c22ecf50001191a09640305.jpg

那么是怎么实现分页的呢。


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
慕布斯37364 2018-12-28 16:11:35

因为在mybatis-config.xml中配置了拦截器,并且

在获取session的时候,是通过SqlSessionFactory获取的,而这个SqlSessionFactory又是通过引用了mybatis-config.xml中的一些相关项被创建出来的。

http://img1.sycdn.imooc.com//climg/5c25d9b500013ec608900593.jpg

所以用session查询的时候,底层应该是应用了这个拦截器的。

这个应该就是他们之间的联系了,但具体是怎么实现的

这个比较底层,我觉得工具拿过来用就好。

就像老师在40秒左右说过,配置后,会自动在查询的时候,查询设置好的条数。

希望可以帮到你哦。

提问者 看到我麻烦叫我去学习 2018-12-28 14:37:38

就是我在UserServlet2中看到的是List<Person> persons=userService.getAllUsersBypageHelper();

其中调用的getAllUsersBypageHelper的方法的查询全部用户的。

我就是搞不清楚为什么明明是select * from person,怎么只查询五个数据,

在mybatis-config.xml中我也只看到了

<plugins>

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

</plugins>

请老师解疑~


  • 就是在我看来,在这几行代码中persons和page好像没有扯上关系
    2018-12-28 14:39:33
  • 因为在mybatis启用了拦截器,而拦截器的作用就是拦截SQL查询。当你在执行查询的时候,如果配置了pageHelper,那么底层会按照pageHelper的参数对查询结果进行处理,persons和page只是拦截处理完之后返回的结果~~~~~
    2019-01-23 00:43:36
好帮手慕阿莹 2018-12-27 09:55:34

1、pageHelper 是通过拦截器实现的,我们在mybatis-config.xml 中配置了拦截器。

并在sqlsessionFactory 中引入了mybatis-config.xml 。

首先我们先设置了起始页和每页查询的页数。如下图红框部分所示:

http://img1.sycdn.imooc.com//climg/5c242f8c0001e40a07190170.jpg

配置好后,它的下一句(如下图红框部分所示)就会根据上边配置的拦截器进行查询。查询出来的就不是全部的,而是就是设置好的本次的起始页以及要查询几条。

http://img1.sycdn.imooc.com//climg/5c242fc60001275507450309.jpg

然后把查询出来的会自动封装到pageInfo中。

http://img1.sycdn.imooc.com//climg/5c2430460001496906340202.jpg

然后我们把他们放到域中转发到页面上就可以了。

当选择第二页的时候,就会再次请求,查询下一个五条数据。

这个是底层封装好的,同学拿来用就可以。

前边老师也粗略的讲了一下拦截器,同学可以再回顾一下哦。

http://img1.sycdn.imooc.com//climg/5c2430fa00010bd504200507.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


慕布斯645313 2018-12-26 13:58:45

这个你看代码就能明白逻辑了,主要就是通过当前页数和当前页数所显示的条目觉定的,比如每页显示5条,当前页是第二页,那么他就之后查询5条数据在第二页显示。你看下面的代码,从前端获取当前的页数,

http://img1.sycdn.imooc.com//climg/5c23174000018df004400439.jpg

然后在UserServiceImpl获取查询索引的记录和每页显示的行数,再调用userDao中的方法获取List集合,再将结果存储在PageUtil对象中的结果集里返回给调用它的方法,并在前段完成展示。基本上就是这个思路。

http://img1.sycdn.imooc.com//climg/5c2317c90001f66907790175.jpg


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师