一,SSM中分页的使用
在java中分页一直是我不敢触及的一部分。本次博客全面剖析一下SSM框架如何实现分页。
二,效果展示
点击前一页后一页首页或者尾页或者是跳转都是静态的实现。
三,表单的实现
3.1,前端代码
listByajax.jsp
<body>
<div>总记录数:<span id="totalCount"></span>总页数:<span id="totalPageCount"></span></div>
<table id="tableTbl" border="1">
<thead>
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>年级</td>
<td>图片</td>
<td>日期</td>
<td colspan="2" style="text-align: center">操作</td>
<button type="button" onclick="addByajaxBut()">添加</button>
</tr>
</thead>
<tbody id="databody">
<!-- 数据行动态生成 -->
</tbody>
</table>
<div>
<button type="button" onclick="shouPage()">首页</button>
<button type="button" onclick="upPage()">上一页</button>
<input type="text" id="currPageNo" style="width: 15px;height: 24px" onblur="inpFenye()">
<button type="button" onclick="nextPage()">下一页</button>
<button type="button" onclick="weiPage()">页尾</button>
</div>
</body>
3.2,Ajax的实现
<script src="/js/jquery.js"></script>
<script>
let currPageNo = 1;
$(function (){
currPageNo = 1;
refreshTablo(currPageNo)
})
// 分页查询
function refreshTablo(currPageNo){
// console.log(0)
$.ajax({
url:"/byajaxController/getByajaxlimit", // 后端查询数据接口的URL
type:"post",
data:{"currPageNo":currPageNo},
dataType:"json",
success:function (result){
console.log(result)
document.getElementById("totalCount").innerHTML=result.totalCount;
document.getElementById("totalPageCount").innerHTML=result.totalPageCount;
document.getElementById("currPageNo").value=result.currPageNo;
// 清空表格数据
$("#databody").empty();
// 动态生成表格数据
var Mybody = $("#databody")
Mybody.html("");
for (var i=0;i<result.byajaxs.length;i++){
var item = result.byajaxs[i];
console.log(item)
var tr = document.createElement("tr");
tr.innerHTML="<td>" + item.id + "</td>" +
"<td> " + item.byname + " </td>" +
"<td> " + item.byage + " </td>" +
"<td> " + item.bygrade + " </td>" +
"<td> " + item.bypicture + " </td>" +
"<td> " + item.bydate + " </td>" +
"<td><button type='button' class='updateBtn' οnclick='updatefu("+ item.id +")'>修改</button></td>" +
"<td><button type='button' class='deleteBtn' data-id=' " + item.id + " '>删除</button></td>"
Mybody.append(tr)
}
}
})
}
//分页的一些方法
function upPage(){
if (currPageNo<=1){
alert("已经是首页了")
}else {
currPageNo=currPageNo-1;
refreshTablo(currPageNo);
}
}
function nextPage(){
if (currPageNo>=parseInt($("#totalPageCount").html())){
alert("已经是尾页了")
}else {
currPageNo=currPageNo+1;
refreshTablo(currPageNo);
}
}
function shouPage(){
currPageNo=1;
refreshTablo(currPageNo);
}
function weiPage(){
currPageNo=parseInt($("#totalPageCount").html());
refreshTablo(currPageNo);
}
function inpFenye(){
currPageNo=parseInt($("#currPageNo").val());
if (currPageNo<1||currPageNo>parseInt($("#totalPageCount").html())){
alert("没有此页码")
currPageNo=1
refreshTablo(currPageNo)
}else {
refreshTablo(currPageNo);
}
}
$(document).ready(function (){
refreshTablo();
})
</script>
3.3,配置好page(用于显示条数,页数等)和Byajax(实体类)
until包下:page.java
package com.xinxi2.until;
import com.xinxi2.bean.Byajax;
import java.util.List;
public class Page {
private int totalPageCount = 0; //总页数 计算 根据每页展示记录数和记录总数计算出来的
private int pageSize = 10; //每页展示记录数。用户指定,通常有默认值
private int totalCount; // 记录总数。 数据库查询
private int currPageNo = 1; //当前页码 用户指定,默认显示第一页
private List<Byajax> Byajaxs; //每页微博集合 数据库查询
public List<Byajax> getByajaxs() {
return Byajaxs;
}
public void setByajaxs(List<Byajax> byajaxs) {
Byajaxs = byajaxs;
}
public int getTotalPageCount() {
// 总页数计算
if (totalCount%pageSize==0){
return totalCount/pageSize;
}else {
return totalCount/pageSize+1;
}
}
public void setTotalPageCount(int totalPageCount) {
this.totalPageCount = totalPageCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getCurrPageNo() {
return currPageNo;
}
public void setCurrPageNo(int currPageNo) {
this.currPageNo = currPageNo;
}
}
Byajax.java
package com.xinxi2.bean;
import com.alibaba.fastjson.annotation.JSONField;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class Byajax {
/** */
private Integer id ;
/** */
private String byname ;
/** */
private String byage ;
/** */
private String bygrade ;
/** */
private String bypicture ;
/** */
@DateTimeFormat(pattern="yyyy-MM-dd") // String 转 Date 视图到控制层
@JSONField(format = "yyyy-MM_dd")
private Date bydate ;
/** */
public Integer getId(){
return this.id;
}
/** */
public void setId(Integer id){
this.id=id;
}
/** */
public String getByname(){
return this.byname;
}
/** */
public void setByname(String byname){
this.byname=byname;
}
/** */
public String getByage(){
return this.byage;
}
/** */
public void setByage(String byage){
this.byage=byage;
}
/** */
public String getBygrade(){
return this.bygrade;
}
/** */
public void setBygrade(String bygrade){
this.bygrade=bygrade;
}
/** */
public String getBypicture(){
return this.bypicture;
}
/** */
public void setBypicture(String bypicture){
this.bypicture=bypicture;
}
/** */
public Date getBydate(){
return this.bydate;
}
/** */
public void setBydate(Date bydate){
this.bydate=bydate;
}
}
3.4,Mapper.xml中查询数据
ByajaxMapper.java
package com.xinxi2.dao;
import com.xinxi2.bean.Byajax;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ByajaxMapper {
int getByajax();
List<Byajax> getByajaxlimit(@Param("currPageNo") int currPageNo,@Param("pageSize") int pageSize);
List<Byajax> getlistByajax(Byajax byajax);
}
ByajaxMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinxi2.dao.ByajaxMapper">
<resultMap id="Byajaxinto" type="com.xinxi2.bean.Byajax">
<id property="id" column="id"></id>
<result property="byname" column="byname"></result>
<result property="byage" column="byage"></result>
<result property="bygrade" column="bygrade"></result>
<result property="bypicture" column="bypicture"></result>
<result property="bydate" column="bydate"></result>
</resultMap>
<select id="getByajax" resultType="java.lang.Integer" parameterType="com.xinxi2.bean.Byajax">
select count(1) from byajax
</select>
<select id="getByajaxlimit" resultType="com.xinxi2.bean.Byajax" resultMap="Byajaxinto">
select id,byname,byage,bygrade,bypicture,bydate FROM byajax
limit #{currPageNo},#{pageSize}
</select>
</mapper>
3.4,service层调用
ByajaxService.java
package com.xinxi2.service;
import com.xinxi2.bean.Byajax;
import java.util.List;
public interface ByajaxService {
int getByajax();
List<Byajax> getByajaxlimit(int currPageNo, int pageSize);
}
ByajaxServiceImpl.java
package com.xinxi2.service.impl;
import com.xinxi2.bean.Byajax;
import com.xinxi2.bean.MyAjax;
import com.xinxi2.dao.ByajaxMapper;
import com.xinxi2.dao.MyAjaxMapper;
import com.xinxi2.service.ByajaxService;
import com.xinxi2.service.MyAjaxService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("byajaxService")
public class ByajaxServiceImpl implements ByajaxService {
@Autowired
private ByajaxMapper byajaxMapper;
@Override
public int getByajax() {
return byajaxMapper.getByajax();
}
@Override
public List<Byajax> getByajaxlimit(int currPageNo, int pageSize) {
int num = (currPageNo-1)*pageSize;
return byajaxMapper.getByajaxlimit(num,pageSize);
}
}
3.5,controller层调用并在jsp页面显示
ByajaxController.java
package com.xinxi2.controller;
import com.alibaba.fastjson.JSON;
import com.xinxi2.bean.Byajax;
import com.xinxi2.service.ByajaxService;
import com.xinxi2.until.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
@RequestMapping("/byajaxController")
public class ByajaxController {
@Autowired
private ByajaxService byajaxService;
@RequestMapping("/getByajaxlimit")
@ResponseBody
public String getByajaxlimit(Byajax byajax, HttpServletRequest request){
Page page = new Page();
String currPageNoStr = request.getParameter("currPageNo");
if (currPageNoStr==null || "".equals(currPageNoStr)){
page.setCurrPageNo(1);
}else {
page.setCurrPageNo(Integer.parseInt(currPageNoStr));
}
String pageSizeStr = request.getParameter("pageSize");
if (pageSizeStr==null || "".equals(pageSizeStr)){
page.setPageSize(3);
}else {
page.setPageSize(Integer.parseInt(pageSizeStr));
}
page.setTotalCount(byajaxService.getByajax());
page.setByajaxs(byajaxService.getByajaxlimit(page.getCurrPageNo(),page.getPageSize()));
String result = JSON.toJSONString(page);
return result;
}
}
总结
最后,简单说点心得,在实现的过程中不要一味的寻求别人详细的模板或者解释,这个只是给你一个参考,最重要的是理解整个过程,然后可以通过自己的方式进行实现。文章来源:https://www.toymoban.com/news/detail-616339.html
最后,有什么不足的地方多多指教!!!文章来源地址https://www.toymoban.com/news/detail-616339.html
到了这里,关于教你实现SSM和Ajax后端分页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!