首先要理清思路
1.根据前端需求定义页面有几条记录pageSize,同时作为后面查询数据库最后一行的参数
2.根据前端传递过来的参数pageNo定义查询第一行
3.查询数据库所有记录(行数),记为参数rows
4.对数据库根据pageNo和pageSize俩参数执行limit查询
5.对pageNo设置界限,然后返回查询的集合
6.前端初始化pageNo值为1,然后把前一页和后一页及首尾页设置为pageNo+-等值
7.在表单中设置一个隐藏域,里面提交pageNo的值
8.通过js里面的函数来将前一页等的值赋予隐藏域中的pageNo值,实现页面的跳转
具体代码实现如下:
在service中定义所需方法:
public Long getWordsRows();
public List<Words> getWordsListByPage(@Param("firstRow") int firstRow,@Param("PageSize") Integer PageSize);
然后实现:
@Override
public List<Words> getWordsListByPage(int PageNo, Integer PageSize) {
List<Words> words=mapper.SelectWordsListByPage((PageNo-1)*PageSize,PageSize); //(PageNo-1)*PageSize 为起始行
return words;
}
@Override
public Long getWordsRows() {
return mapper.SelectWordsRows();
}
dao接口定义:
public List<Words> SelectWordsListByPage(@Param("firstRow") int firstRow,@Param("PageSize") Integer PageSize);
public Long SelectWordsRows();
mapper.xml配置sql语句:
<select id="SelectWordsListByPage" resultMap="BaseResultMap">
select name name,date date,content content from words
limit #{firstRow},#{PageSize}
</select>
<select id="SelectWordsRows" resultType="long">
select count(1) from words
</select>
controller层:
@RequestMapping("/getAll")
public String getAll(HttpServletRequest request,Model model,@RequestParam(defaultValue="1",required=true,value="PageNo")Integer PageNo) {
Integer PageSize=6;
if(null==PageNo) {
PageNo=1;
}
Long rows=wordsService.getWordsRows();
Long totalPage=rows%PageSize==0?rows/PageSize:rows/PageSize+1;
if(PageNo<1) {
PageNo=1;
}else if(PageNo>totalPage){
PageNo=Integer.parseInt(totalPage.toString());
}
List<Words> words=wordsService.getWordsListByPage(PageNo,PageSize);
request.setAttribute("wordlist", words);
model.addAttribute("wordlist", words);
model.addAttribute("PageNo", PageNo);
model.addAttribute("totalpage", totalPage);
return "/AllPoem";
}
前端页面AllPoem:
1.表单:
<form action="<%=basePath%>user/getAll" method="post" id="wordsform">
<input type="hidden" name="PageNo" id="PageNo" value="1">
<table>
<tbody>
<c:if test="${!empty wordlist }">
<c:forEach items="${wordlist }" var="words">
<tr>
<td width="150px">${words.name }:</td>
<td></td>
<td width="500px">${words.content }</td>
<td width="50px"></td>
<td width="150px">${words.date }</td>
</tr>
</c:forEach>
</c:if>
<tr>
<td height="39px" colspan="8" align="center" valign="middle">
<a href="javascript:set_PageNo(1)">首页</a> <a
href="javascript:set_PageNo(${PageNo-1 })">上一页</a> <a
href="javascript:set_PageNo(${PageNo+1 })">下一页</a> <a
href="javascript:set_PageNo(${totalpage })">尾页</a>
${PageNo }/${totalpage }
</td>
</tr>
</tbody>
</table>
</form>
2.js
function set_PageNo(PageNo) {
$("#PageNo").val(PageNo);
$("#wordsform").submit();
}
展示: