ssm框架新增分頁
阿新 • • 發佈:2020-08-09
分頁需要對前後端都進行處理,下面詳細介紹一下:
一、後端的處理
1、基礎方法
1、基礎的方法是封裝一個分頁類如下
public class Pages {
private Integer pageNo=1;//頁號
private Integer pageSize=6;//頁大小
private Integer withPage=1;//是否分頁
public Integer getStartRow(){//獲取開始行,limit方言
return (pageNo-1)*pageSize;
}
}
2、然後查詢的物件繼承一下這個頁面類,查詢的時候加上limit如下
select id,username,likes from user limit #{startRow},#{pageSize}
3、查詢的時候自己設定頁面大小和頁號,不然會選擇預設,這樣就能根據要求查詢出想要的資料了。
4、也可以把引數封裝成Map來傳遞。
2、使用分頁外掛
1、使用pageHelper外掛就比較方便了步驟如下:
2、匯入包
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency>
這個外掛會自動攔截sql然後計算出需要的資訊
3、在sqlsessionFactory中配置外掛如下:
<!-- sqlSessionFactory 連線池引入--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource"ref="datasource"></property> <property name="typeAliasesPackage" value="com.pojo"></property> <!-- 配置外掛,外掛攔截sql語句進行操作--> <property name="plugins"> <!-- 陣列用array,list用list,preperties用props每一項都有key和value--> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <props> <!--合理性--> <prop key="reasonable">true</prop> <!--資料庫型別--> <prop key="helperDialect">mysql</prop> </props> </property> </bean> </array> </property> </bean>
4、通過業務層返回給controller一個pageInfo<T>來傳遞給前端資訊
public PageInfo<User> list(User user) { PageHelper.startPage(user.getPageNo(),user.getPageSize());//設定起始頁和頁大小,不用自己算了 PageInfo<User> pageInfo=new PageInfo<User>(userDao.list(user));//然後把資訊給pageInfo,返回所有分頁資訊 return pageInfo; }
5、前端通過引數回撥來實現分頁。
2、前端的處理
1、首先通過span和a標籤來實現頁按鈕,span為不可點標籤,a為跳轉標籤
2、我們可以通過觀察返回的pageinfo觀察到要用到的引數,包含上一頁、下一頁、頁內容、總頁數,開始位置和結束位置等引數
3、通過地址來把引數加進去查詢,比如上一頁就是list?pageNo=${users.prePage}
為了相容搜尋還要加上搜索內容即list?pageNo=${users.prePage}&username=${username}
4、處理首頁的上一頁和尾頁的下一頁,加個when和otherwise即可
分頁程式碼如下:
<div class="pagelist"> <c:choose> <c:when test="${users.pageNum==1}"> <span class="current">首頁</span> <span class="current">上一頁</span> </c:when> <c:otherwise> <a href="list?pageNo=1&username=${username}">首頁</a> <a href="list?pageNo=${users.prePage}&username=${username}">上一頁</a> </c:otherwise> </c:choose> <c:forEach items="${users.navigatepageNums}" var="i"> <c:choose> <c:when test="${i==users.pageNum}"> <span class="current">${i}</span> </c:when> <c:otherwise> <a href="list?pageNo=${i}&username=${username}">${i}</a> </c:otherwise> </c:choose> </c:forEach> <c:choose> <c:when test="${users.pageNum==users.pages}"> <span class="current">下一頁</span> <span class="current">尾頁</span> </c:when> <c:otherwise> <a href="list?pageNo=${users.nextPage}&username=${username}">下一頁</a> <a href="list?pageNo=${users.pages}&username=${username}">尾頁</a> </c:otherwise> </c:choose> </div>
具體樣式可以自己調,我的樣式效果如下:
這樣就完成了資料的分類顯示功能。