String-boot + mybatis +pagehelper 使用分页
最近自己搭建一个spring-boot 的项目听说最近很是流行,之前在一件公司用的觉得挺不错.所以自己配置一下学习学习.结果做到分页的时候看到了pagehelper 貌似是个很牛的插件所以用来学习一下,结果两天都没怎么弄明白,网上查了好多资料.但好像没有看到代码很全的,让我这个小白彻底看懂的(自己愚笨) ,所以今天终于成功了. 特地写出来争取写的详细一点 ,照着做就能一下成功的.供给和我一样还在茫然的伙伴提示一下,给自己也提个醒.写的不好还请各路英雄豪杰多多指教
废话不多说
工具:eclipse jdk 1.7
环境: windows 7 tomcat 7.0
然后, spring-boot + mybatis +thymeleaf +maven,数据库mysql
首先pom.xml 的pagehelper 引入 我这里用的是 4.1.0的版本 现在最新的应该是5.1.4 而且会有一些差异 jsqlparser 也需要一同引入 4.1.0及以后版本需要0.9.4版本 以下 0.9.1版
pom.xml
然后我的配置文件的路径结构 config 文件夹下是 spring-boot 的application 和mybatis 的配置xml,mapper 是mybatis 的mapper 查询语句文件 查询的sql 都写在对应的xml 里.static 下引入的css js等,templates 是thymeleaf的模板文件,也就是html
spring-boot 和mybatis的应用的配置 , spring和mybatis配置文件应用方式有好几种,我是用的application.yml和mybatis.xml 的配置方式 . 也有 application.properties和mybatis-config.xml的.
application.yml 配置mybatis 的mapper 路径和配置文件路径,不能写错,pagehelper 是可以不用写的 具体配置实在mybatis.xml 里面
mybatis.xml 这里面就是pagehelper 的配置 当然还有其他的属性
基本上配置类文件是这些
接下来
Controller 方法里我并没有传参数,实际应用中需要条件查询会传一些参数的,但是这里不用传输分页的任何参数 pagehelper .startPage (当前页,当前页记录) 就足以 是不是很简单.这个可以写在controller 里或者实现层里,我这几行代码也是网上粘的,但是忘记在哪个网站上粘的了.
service
serviceimpl
dao层
bean
MenDao.xml sql的语句写在了这里.返回的是对象类型的集合
页面 因为我用的是thymeleaf模板引擎 就是 html.但功能很强大.
table表格
分页的代码我就直接粘出来吧
方便使用
<div class="container"> <div style="margin-top: 10px;"> <ul id="page" class="pagination"> <div class = "aad"> 当前第<span th:text="${pageInfo.pageNum} "></span>页.每页条数:<span th:text="${pageInfo.pageSize}"></span> 一共 <span th:text="${pageInfo.total}"></span> 条记录</div> <li > <a th:href="@{'/menu/getMenu?pageNum='+${pageInfo.firstPage}}" >首页</a> </li> <!--上一页--> <li th:if="${pageInfo.hasPreviousPage}"> <a th:href="@{'/menu/getMenu?pageNum='+${pageInfo.prePage}}" > <i class="fa fa-angle-left"></i> 上一页 </a> </li> <!--循环遍历连续显示的页面,若是当前页就高亮显示,并且没有链接--> <th:block th:each="nav : ${pageInfo.navigatepageNums}" > <li th:class="${nav==pageInfo.pageNum}?'active':''" > <a th:href="@{'/menu/getMenu?pageNum='+${nav}}" th:text="${nav}"></a></li> </th:block> <th:block th:if="${pageInfo.hasNextPage}"> <li> <a th:href="@{'/menu/getMenu?pageNum='+${pageInfo.nextPage}}" > 下一页 <i class="fa fa-angle-right"></i> </a> </li> </th:block> <li> <a th:href="@{'/menu/getMenu?pageNum='+${pageInfo.lastPage}}">尾页</a> </li> </ul> </div> </div>
最终页面显示的样子,简单调了一下样式.
基本上就这些了,之后我还要加上页面输入页码跳转的功能. 我也是刚开始学习这个东西很多也是在摸索中,高手略过,哈哈哈