1.首先在mybatis-config.xml
中添加以下配置:前端
<plugins> <!-- com.github.pagehelper爲PageHelper類所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 使用下面的方式配置參數,後面會有全部的參數介紹 --> <property name="helperDialect" value="mysql"/> </plugin> </plugins>
配置後爲mysql
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置全局屬性 --> <settings> <!-- 使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值 --> <setting name="useGeneratedKeys" value="true" /> <!-- 使用列別名替換列名 默認:true --> <setting name="useColumnLabel" value="true" /> <!-- 開啓駝峯命名轉換:Table{create_time} -> Entity{createTime} --> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <plugins> <!-- com.github.pagehelper爲PageHelper類所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 使用下面的方式配置參數,後面會有全部的參數介紹 --> <property name="helperDialect" value="mysql"/> </plugin> </plugins> </configuration>
2.git
須要分頁,天然就還要一個查詢了。用了PageHelper以後,查詢語句就能夠很簡單了。github
<select id="queryAll" resultMap="BaseResultMap" > select * from article ORDER BY id DESC </select>
3.sql
接口、實現類我就再也不貼代碼了,該怎麼寫仍是怎麼寫,不須要傳分頁參數。而後是Controller:數據庫
@RequestMapping("/") public ModelAndView index(@RequestParam(required=true,defaultValue="1") Integer page, @RequestParam(required=false,defaultValue="5") Integer pageSize){ ModelAndView modelAndView =new ModelAndView("index"); PageHelper.startPage(page, pageSize); List<Article> articles=articleService.queryAll(); PageInfo<Article> pageInfo=new PageInfo<Article>(articles); modelAndView.addObject("articles",articles); modelAndView.addObject("pageInfo",pageInfo); return modelAndView; }
PageHelper.startPage(page, pageSize);
這段代碼表示,程序開始分頁了,page默認值是1,pageSize默認是10,意思是從第1頁開始,每頁顯示10條記錄。mybatis
使用PageInfo這個類,你須要將查詢出來的list放進去:app
PageInfo<Article> pageInfo=new PageInfo<Article>(articles);
而後 ui
modelAndView.addObject("pageInfo",pageInfo);spa
4.前端分頁代碼(Bootstrap)
<ul class="pagination" > <li <c:if test="${pageInfo.pageNum==1}">class="disabled"</c:if>><a href="/?page=1">«</a></li> <c:forEach begin="1" end="${pageInfo.pages}" step="1" var="pageNo"> <li <c:if test="${pageInfo.pageNum==pageNo}">class="active"</c:if>><a href="/?page=${pageNo}">${pageNo}</a></li> </c:forEach> <li <c:if test="${pageInfo.pageNum==pageInfo.pages}">class="disabled"</c:if>><a href="/?page=${pageInfo.pages}">»</a></li> </ul>
5.PageInfo類
//當前頁 private int pageNum; //每頁的數量 private int pageSize; //當前頁的數量 private int size; //排序 private String orderBy; //因爲startRow和endRow不經常使用,這裏說個具體的用法 //能夠在頁面中"顯示startRow到endRow 共size條數據" //當前頁面第一個元素在數據庫中的行號 private int startRow; //當前頁面最後一個元素在數據庫中的行號 private int endRow; //總記錄數 private long total; //總頁數 private int pages; //結果集 private List<T> list; //第一頁 private int firstPage; //前一頁 private int prePage; //下一頁 private int nextPage; //最後一頁 private int lastPage; //是否爲第一頁 private boolean isFirstPage = false; //是否爲最後一頁 private boolean isLastPage = false; //是否有前一頁 private boolean hasPreviousPage = false; //是否有下一頁 private boolean hasNextPage = false; //導航頁碼數 private int navigatePages; //全部導航頁號 private int[] navigatepageNums;