PageHelper 需要的maven坐标
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
applicationContext.xml (spring.xml ) 配置 在 SqlSessionFactoryBean 标签内 配置
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="datasource"/>
传入PageHelper的插件
<property name="plugins">
<array>
传入插件的对象
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<prop key="helperDialect">oracle</prop>
<prop key="reasonable">true</prop> 使页数不能为负数和大于页数
</props>
</property>
</bean>
</array>
</property>
</bean>
2.在Service中 只需要 page szie 需要前端传过来
@Service
@Transactional
public class OrdersServiceImpl implements IOrdersService {
@Autowired
private IOrdersDao iOrdersDao;
@Override
public List<Orders> findAll(int page, int size) {
PageHelper.startPage(page,size); 必须在findAll方法前
return iOrdersDao.findAll();
}}
3.Controller中
@Controller
@RequestMapping("/orders")
public class OrderController {
@Autowired
private IOrdersService iorderService;
@RequestMapping("/findAll.do")
public ModelAndView findAll(@RequestParam(name = "page",required = true,defaultValue = "1") int page,@RequestParam(name = "size",required = true,defaultValue = "4") int size){
List<Orders> orders = iorderService.findAll(page,size);
PageInfo pageInfo = new PageInfo(orders);
ModelAndView mv = new ModelAndView();
mv.addObject("pageInfo",pageInfo);
mv.setViewName("orders-page-list");
return mv;
}
}
PageInfo 是有page helper 提供的类 将数据库中查询封装 的 orders domain 直接传入构造方法
在前端 直接 pageInfo.list 取出orders 数据 其中pageInfo还有 当前页 总页数等信息
4.前端配置
<div class="box-tools pull-right">
<ul class="pagination">
<li>
<a href="${pageContext.request.contextPath}/orders/findAll.do?page=1&size${pageInfo.pageSize}" aria-label="Previous">首页</a>
</li>
<li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum-1}&size${pageInfo.pageSize}">上一页</a></li>
<c:forEach begin="1" end="${pageInfo.pages}" var="pageNum">
<li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageNum}&size${pageInfo.pageSize}">${pageNum}</a></li>
</c:forEach>
<li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum+1}&size${pageInfo.pageSize}">下一页</a></li>
<li>
<a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pages}&size${pageInfo.pageSize}" aria-label="Next">尾页</a>
</li>
</ul>
</div>