第一步 导入pom依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
第二步 写入配置
如是单独的Mybatis项目直接在mybatis-config.xml
如果是SSM项目的话,在spirng-dao.xml配置文件,也是spring管理的mybatis配置文件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--绑定Mybatis的配置文件-->
<property name="configLocation" value="classpath:mybaits-congfig.xml"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<!--传入pageHelper插件-->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个 -->
<props>
<!--代表使用什么数据库-->
<prop key="helperDialect">mysql</prop>
<!--规范分页,比如-1页 -2 -3 -->
<prop key="reasonable">true</prop>
</props>
<!--<value>-->
<!-- params=value1-->
<!--</value>-->
</property>
</bean>
</array>
</property>
</bean>
第三步 引用
SSM项目中,service层调用dao层的业务,而这个插件会在sql语句后面自动拼接,所以不用在dao层的方法里面写参数
service接口
/**
* 查询全部
*
* @param
* @return 对象列表
*/
List<Orders> findAll(int page,int size);
serviceimpl实现类,PageHelper插件提供了一个方法startPage()传入两个参数,一个起始页码,一个是每页多少条数据
/**
* 查询全部
*
* @param
* @return 对象列表
*/
@Override
public List<Orders> findAll(int page,int size) {
//参数 pageNum是页码,参数pageSize是显示条数
PageHelper.startPage(page,size);
return ordersDao.findAll();
}
顺腾摸瓜,写到Controller, 这里一定要注意,传入model的经过PageInfo加工过的数据
/**
* 查询全部订单
*
* @param page 起始页
* @param size 每页多少条数据
* @param model
* @return
*/
@RequestMapping("/findAll.do")
public String findAll(@RequestParam(name="page",required = true,defaultValue = "1")int page,
@RequestParam(name="size",required = true,defaultValue = "4")int size, Model model){
List<Orders> ordersList = ordersService.findAll(page,size);
//页数信息:总记录书,当前业,每页数量,当前页数量等等等
PageInfo pageInfo = new PageInfo(ordersList);
model.addAttribute("pageInfo",pageInfo);
return "orders-page-list";
}
前端页面
<div class="box-tools pull-right">
<ul class="pagination">
<li>
<a href="${pageContext.request.contextPath}/orders/findAll.do?page=1&size=${pageInfo.size}"
aria-label="Previous">首页</a>
</li>
<li>
<a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum-1}&size=${pageInfo.size}">上一页</a>
</li>
<c:forEach begin="1" end="${pageInfo.pages}" var="pageNum">
<li>
<a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageNum}&size=${pageInfo.size}">${pageNum}</a>
</li>
</c:forEach>
<li>
<a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum+1}&size=${pageInfo.size}">下一页</a>
</li>
<li>
<a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pages}&size=${pageInfo.size}"
aria-label="Next">尾页</a>
</li>
</ul>
</div>