MyBatis分頁外掛PageHelper簡單使用
阿新 • • 發佈:2020-12-28
一、匯入依賴
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
二、整合ssm框架
在sqlSessionFactoryBean內加入配置即可
<!-- 把交給IOC管理 SqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <props> <prop key="helpDialect">oracle</prop> <prop key="reasonable">true</prop> </props> </property> </bean> </array> </property> </bean>
三、coding部分
在controller層傳入引數(page:當前頁碼,pageSize:每頁顯示的條數)
controller層
@Controller @RequestMapping("/orders") public class OrdersController { @Autowired private IOrdersService ordersService; @RequestMapping("/findAll.do") public ModelAndView findAll(@RequestParam(name = "page", required = true, defaultValue = "1") Integer page, @RequestParam(name = "pageSize", required = true, defaultValue = "4") Integer pageSize) throws Exception { List<Orders> ordersList = ordersService.findAll(page,pageSize); PageInfo pageInfo = new PageInfo(ordersList); ModelAndView mv = new ModelAndView(); mv.setViewName("orders-list"); mv.addObject("pageInfo", pageInfo); return mv; } }
service層
PageHelper.startPage(page,pageSize);一定要在查詢方法前中間不能插入其他程式碼 ,否則攔截器無法將分頁語句注入。
@Service public class IOrdersServiceImpl implements IOrdersService { @Autowired private IOrdersDao ordersDao; @Override public List<Orders> findAll(Integer page,Integer pageSize) throws Exception { PageHelper.startPage(page,pageSize); List<Orders> list = ordersDao.findAll(); return list; } }
四、前端頁面顯示
<div class="box-footer"> <div class="pull-left"> <div class="form-group form-inline"> 總共${pageInfo.pages}頁,共${pageInfo.total} 條資料。 每頁 <select class="form-control" id="changePageSize" onchange="changePageSize()"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> 條 </div> </div> <div class="box-tools pull-right"> <ul class="pagination"> <li> <a href="${pageContext.request.contextPath}/orders/findAll.do?page=1&pageSize=${pageInfo.pageSize}" aria-label="Previous">首頁</a> </li> <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum-1}&pageSize=${pageInfo.pageSize}">上一頁</a></li> <c:forEach begin="1" end="${pageInfo.pages}" var="pageNum"> <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageNum}&pageSize=${pageInfo.pageSize}">${pageNum}</a></li> </c:forEach> <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum+1}&pageSize=${pageInfo.pageSize}">下一頁</a></li> <li> <a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pages}&pageSize=${pageInfo.pageSize}" aria-label="Next">尾頁</a> </li> </ul> </div> </div>
注:
PageInfo類相當於一個分頁Bean
該類中的相關屬性:
list:表示分頁後每頁顯示的資料
pages:表示總頁數
pageSize:表示當前頁顯示的條數
total:表示總條數
pageNum:表示當前頁(當前頁頁碼)