PageHelper 分页插件,学到的写法是得到Page 对象后再转成PageInfo 对象,但Page 是ArrayList 的子类,里面包含了数据列表和分页信息,为什么不能直接用Page 对象做分页呢?问题只是如何在页面取出Page 中数据。经过多次尝试,终于验证这个想法是可行的。

0)环境:SpringMVC + Spring + MyBatis。

1)mybatis 配置文件添加PageHelper 插件信息。

 <plugins><plugin interceptor="com.github.pagehelper.PageHelper"><property name="dialect" value="mysql"/><!--reasonable 默认false,设为true 时,当pageNum(当前页) 小于1时,会自动为其赋值为1。--><property name="reasonable" value="true"/></plugin></plugins>

2)Service 实现类,直接返回Page 对象。

PageHelper.startPage() 的两个参数:pageNum (当前页) 通过第一步的配置完成初始化;pageSize (每页展示条数) 可以放到常量接口类(放utils 包) 里面。

@Overridepublic Page<User>  getUserPage(Page<User> page) {PageHelper.startPage(page.getPageNum(), 3);return (Page<User>) userDao.getUserList();}

3)Controller 方法。此处方法形参Page<User> 直接就是插件里的Page 类。

  • 此处Page 类后面不写<User> 的话,进入用户列表页面时浏览器会报一个奇怪的错误:Root Cause: java.lang.IllegalArgumentException: Cannot generate variable name for non-typed Collection parameter type,控制台没报错信息,Baidu Google 都找不到一样的案例,最后自己发现是形参类不完整的问题。
        @Autowiredprivate IUserService userService;@RequestMapping(value = "/getUserPage")public String getUserPage(Page<User> page, ModelMap map) {page = userService.getUserPage(page);map.put("page", page);map.put("url", "user/getUserPage?");return "userList";}

4)展示页面,因为page 是ArrayList 的子类,直接把它作为List 来用即可。

<table border="1" class="layui-table"><tr><td>id</td><td>姓名</td><td>密码</td><td>生日</td><td>操作</td></tr><c:forEach items="${page}" var="user"><tr><td>${user.id}</td>            <td>${user.name}</td><td>${user.password}</td><td>${user.birthday}</td><td><a href="#">编辑</a><a href="#">删除</a></td></tr></c:forEach>
</table>
<jsp:include page="/common/page.jsp"/>

5)分页页面,用了layui 分页插件。关键在这里:Page 对象里含有分页信息,但因为它又是List,直接用${page.total} 这种写法是取不到分页信息的,试了几次,用下面代码写法可行:${page.getTotal()}

PS: 还有一种用下标的EL 表达式写法,不循环也能取到List 里面实体数据的值:${page[0].id}

<html>
<head>
<base href="<%=request.getContextPath()+"/"%>">
<!-- 样式文件 --><link rel="stylesheet" href="js/layui/css/layui.css" media="all">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- js文件 -->
<script src="js/layui/layui.js"></script>
<script>
layui.use('laypage', function(){var laypage = layui.laypage;//执行一个laypage实例laypage.render({elem: 'test1' //注意,这里的 test1 是 ID,不用加 # 号,count: "${page.getTotal()}" //数据总数,从服务端得到,limit:"${page.getPageSize()}",curr:"${page.getPageNum()}", layout: ['prev', 'page', 'next','count'],jump: function(obj, first){ // 切换页码的时候调用debugger//obj包含了当前分页的所有参数,比如:console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。console.log(obj.limit); //得到每页显示的条数//首次不执行if(!first){location.href="${url}pageNum="+obj.curr}}});
});
</script>
</head>
<body>
<!-- 分页导航条 -->
<div id="test1"></div>
</body>
</html>

PageHelper 分页插件只用Page、不用PageInfo 的写法相关推荐

  1. 附加:PageHelper分页插件的:Page和PageInfo的区别;

    说明: (1)为什么写本篇博客?: ● 在[Spring Boot电商项目29:商品分类模块八:后台的[分类列表(平铺)]接口:]中,实现分页功能时,使用到了PageHelper分页插件: ● 但是, ...

  2. PageHelper分页插件及PageInfo介绍及使用

    1. MyBatis分页插件-PageHelper的配置 maven配置文件pom.xml 引入依赖: <!--引入PageHelper分页插件 → PageHelper--><de ...

  3. MyBatis入门(九)注解开发(下) PageHelper分页插件

    目录 一.二级缓存 二.一对一关联查询 三.一对多关联查询 四.注解开发与映射文件开发的对比 五.PageHelper分页插件 一.二级缓存 MyBatis默认开启一级缓存,接下来我们学习如何在注解开 ...

  4. springboot2.0.5集成mybatis(PageHelper分页插件、generator插件使用)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zab635590867/article ...

  5. Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件

    前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...

  6. PageHelper 分页插件使用总结

    一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ 一.认识 PageHelper **官网:**https://pa ...

  7. 使用PageHelper分页插件手动分页,其他查询数据出现串连问题

    在一个需求中,需要在代码中进行分页,于是就选用了PageHelper分页插件进行分页,刚开始的时候忘记了PageHelper分页插件的用法于是我就用: // 设置分页查询条件 PageHelper.s ...

  8. spring boot+mybatis+thymeleaf+pagehelper分页插件实现分页功能

    文章目录 前言 正文 业务场景 后端 pom.xml application.yml 实体类video.java和User.java----映射VideoMapper.xml----VideoMapp ...

  9. SpringBoot整合PageHelper分页插件

    首先新建项目 第一步: 第二步: 然后手动添加PageHelper分页插件依赖 <dependency><groupId>com.github.pagehelper</g ...

最新文章

  1. c++ string 拼接_String类5个常见面试题的解答过程和原理
  2. spring cloud (一):大话 Spring Cloud
  3. 【worker】js中的多线程
  4. CF1406E:Deleting Numbers(构造、根号分块)
  5. python读取Excel工作簿、工作表
  6. 为iptables增加layer7补丁(Linux2.6.25内核
  7. 详解Java类对象执行顺序
  8. 【javascript】 的严格模式 详解
  9. 51Nod-1014 X^2 Mod P【暴力】
  10. time函数python_python time模块函数
  11. HCIE-Security Day28:IPSec:实验(三)总部采用ISAKMP方式安全策略组与分支机构之间建立IPSec PN
  12. 用 DocFetcher 全文搜索
  13. 【转载】装机知识显卡篇,一篇文章让小白透彻的了解显卡
  14. html实现背景图片自动更换,HTML实现背景图片的替换
  15. 100个精彩的开源游戏
  16. java的Lambda表达式理解
  17. fillpolygon
  18. fabs ( )【C语言库函数源代码】
  19. mb63.net/ios.html,Document
  20. 数据分析 --- day10python基础

热门文章

  1. c语言程序设计年份,C语言程序设计 输出任意年份的日历
  2. ye读春秋左传系列视频讲解
  3. 如何把PDF中的一页内容替换掉
  4. 众盟超级推的“私域营销”,如何实现人人优活的流量十倍增?
  5. SpringCloud与微服务Ⅷ --- Hystrix断路器
  6. 为什么 Flutter 是跨平台开发的终极之选
  7. 苹果CMSV10仿芒果TV影视PC+WAP模板
  8. 色粉笔画的简史和怎样画色粉笔画?
  9. 【真北直播预报】让你的对话更有力,使十维宇宙不坠落
  10. 天水市2021年高考成绩查询,2021年天水高考状元是谁分数多少分,历年天水高考状元名单...