更新時(shí)間:2021-09-06 10:58:10 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1037次
最終效果:
實(shí)現(xiàn):
分頁(yè)查詢(xún)有幾個(gè)比較重要的參數(shù),pageNum當(dāng)前的頁(yè)數(shù),pageSize每頁(yè)所展示的數(shù)據(jù),totalRecord總共有多少數(shù)據(jù),其他的數(shù)據(jù)可以根據(jù)這三個(gè)數(shù)據(jù)得出,有了這幾個(gè)數(shù)據(jù)就可以分頁(yè)查詢(xún)了
public class Page {
//當(dāng)前的頁(yè)數(shù)
private int pageNum;
//每頁(yè)所展示的數(shù)據(jù)
private int pageSize;
//總共有多少數(shù)據(jù)
private int totalRecord;
//總頁(yè)數(shù)
private int totalPage;
//查詢(xún)數(shù)據(jù)的起始位置
private int startIndex;
//存放查詢(xún)到的數(shù)據(jù)
private List<Book> booklist;
//相對(duì)的頭頁(yè)
private int start;
//相對(duì)的尾頁(yè)
private int end;
public Page(int pageNum, int pageSize, int totalRecord) {
this.pageNum = pageNum;
this.pageSize = pageSize;
this.totalRecord = totalRecord;
if(totalRecord%pageSize == 0){
//如果剛好能夠整除,則totalPage = totalRecord/pageSize
this.totalPage = totalRecord/pageSize;
}else{
//如歌不能整除,則需要多加一頁(yè)顯示余下的數(shù)據(jù)
this.totalPage = (totalRecord/pageSize)+1;
}
this.startIndex = (pageNum-1)*pageSize;
//初始頭頁(yè)
this.start = 1;
//初始尾頁(yè)
this.end = 5;
if(totalPage<5){
//如果總頁(yè)數(shù)小于5頁(yè),則尾頁(yè)為總頁(yè)數(shù)
this.end = this.totalPage;
}else{
this.start = this.pageNum-2;
this.end = this.pageNum+2;
if(this.start<0){
this.start = 1;
this.end = 5;
}
if(this.end>totalPage){
this.end = totalPage;
this.start = this.end-5;
}
}
}
//下面的為get/set方法
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getStartIndex() {
return startIndex;
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
public List<Book> getBooklist() {
return booklist;
}
public void setBooklist(List<Book> booklist) {
this.booklist = booklist;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
}
pageNum從請(qǐng)求中獲得,pageSize自己設(shè)置,totalRecord通過(guò)mybatis查詢(xún)獲得,一開(kāi)始登錄的時(shí)候請(qǐng)求中沒(méi)有pageNum,所以進(jìn)行一個(gè)判斷,如果沒(méi)有pageNum則賦值為1
//pageNum
String pageNum = request.getParameter("pageNum") == null?"1":request.getParameter("pageNum");
//pageSize
int pageSize = 7;
//totalRecord
int totalRecord = bookMapper.BookSize();
//mybatis
<select id="BookSize" resultType="int">
select count(*) from book
</select>
有了pageNum和startIndex就可以查詢(xún)到特定范圍的數(shù)據(jù),通過(guò)使用mysql中的limit函數(shù),limit有兩個(gè)參數(shù),第一個(gè)參數(shù)為起始位置,即從那開(kāi)始查,第二個(gè)參數(shù)為查詢(xún)范圍,即查多少個(gè),如 limit 14,7 為從第14個(gè)數(shù)據(jù)開(kāi)始往后查七個(gè)。
<select id="Books" parameterType="java.util.Map" resultType="book">
select *from book limit #{startIndex},#{pageSize}
</select>
public static Page getPageUser(int pageNum,int pageSize){
SqlSession sqlSession = GetSqlSession.getSqlSession();
BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);
int totalRecord = bookMapper.BookSize();
Page page = new Page(pageNum,pageSize ,totalRecord );
int startIndex = page.getStartIndex();
Map<String,Integer> map = new HashMap<>();
map.put("startIndex",startIndex );
map.put("pageSize",pageSize );
page.setBooklist(bookMapper.Books(map));
return page;
}
jsp頁(yè)面:
<a href="index?pageNum=1">首頁(yè)</a>
<%--當(dāng)前頁(yè)數(shù)為第一頁(yè)--%>
<c:if test="${sessionScope.page.pageNum == 1}">
<c:forEach begin="${sessionScope.page.start}" end="${sessionScope.page.end}" step="1" var="i">
<c:if test="${sessionScope.page.pageNum == i}">
<span style="color: deeppink">${i}</span>
</c:if>
<c:if test="${sessionScope.page.pageNum != i}">
<a href="index?pageNum=${i}">${i}</a>
</c:if>
</c:forEach>
<a href="index?pageNum=${sessionScope.page.pageNum+1}">下一頁(yè)</a>
</c:if>
<%--當(dāng)前頁(yè)數(shù)為中間頁(yè)數(shù)--%>
<c:if test="${sessionScope.page.pageNum >1 && sessionScope.page.pageNum<sessionScope.page.totalPage}">
<a href="index?pageNum=${sessionScope.page.pageNum-1}">上一頁(yè)</a>
<c:forEach begin="${sessionScope.page.start}" end="${sessionScope.page.end}" step="1" var="i">
<c:if test="${sessionScope.page.pageNum == i}">
<span style="color: deeppink">${i}</span>
</c:if>
<c:if test="${sessionScope.page.pageNum != i}">
<a href="index?pageNum=${i}">${i}</a>
</c:if>
</c:forEach>
<a href="index?pageNum=${sessionScope.page.pageNum+1}">下一頁(yè)</a>
</c:if>
<%--當(dāng)前頁(yè)數(shù)為最后一頁(yè)--%>
<c:if test="${sessionScope.page.pageNum == sessionScope.page.totalPage}">
<a href="index?pageNum=${sessionScope.page.pageNum-1}">上一頁(yè)</a>
<c:forEach begin="${sessionScope.page.start}" end="${sessionScope.page.end}" step="1" var="i">
<c:if test="${sessionScope.page.pageNum == i}">
<span style="color: deeppink">${i}</span>
</c:if>
<c:if test="${sessionScope.page.pageNum != i}">
<a href="index?pageNum=${i}">${i}</a>
</c:if>
</c:forEach>
</c:if>
<a href="index?pageNum=${sessionScope.page.totalPage}">尾頁(yè)</a>
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"JavaWeb分頁(yè)查詢(xún)",希望對(duì)大家有幫助,想了解更多可查看JavaWeb教程。動(dòng)力節(jié)點(diǎn)在線(xiàn)學(xué)習(xí)教程,針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門(mén)到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743