mysql分页(ajax)

Wesley13
• 阅读 518

分页有多种方式,mysql的limit是个不错的选择,通过ajax实现异步刷新,将当前页数和每页数量传入后台即可

1. 首先后台要拿到总记录数和所需显示数据列表,所以要分别写两个sql方法

我这里是通过spring的注解方式写的sql,其它方法原理是一样的

mysql分页(ajax)

/** * 礼品列表(分页) */ @Select("select * from t_coupons limit ${firstnum},${maxnum}") public List list(@Param("firstnum") long firstnum,@Param("maxnum") long maxnum);

/\*\*
 \* 礼品列表总条数
 \*/
@Select("select count(\*) from t\_coupons")
public int countlist();

mysql分页(ajax)

2. 再是service的处理,这里因为每条显示数量由后台控制,所以只需要传入当前页数就行,如有需要可自己加

mysql分页(ajax)

/** * 礼品列表 */ public List list(int pageNow) { //每页显示条数 int pageNum = 5; //开始条数 int beginNum = (pageNow - 1) * pageNum; //查询 List couponDataTotal = couponDataDao.list(beginNum, pageNum); //总条数 int count = couponDataDao.countlist(); //总页数 int allPage = PageUtil.countPageByCountAndpageNum(count, pageNum); //数据集合 List list = new ArrayList(); list.add(couponDataTotal); list.add(allPage); return list;

}

mysql分页(ajax)

后台返回的是一个object数据,包含数据列表和总页数

3. 接下来就是前端处理了,我同事写了一个公共js,只需要引用js和一行html即可实现上一页、下一页的控制效果和当前页数、总页数的显示,觉得很不错,所以拿来用了

mysql分页(ajax)

/** * 分页的改变 * @param pageShowId 分页显示的id * @param i (1 上一页,2 下一页,3 当前页,4 第一页) * @returns 操作过后的页数(当前页) */ function pageChange(pageShowId,i){ if(i == 1){ clickUp(pageShowId); }else if(i == 2){ clickNext(pageShowId); }else if(i == 4){ setPageNum(pageShowId, 1, 1); } var nowPage = getPageNum(pageShowId, 1); return nowPage; }

/** * 点击上一页的时候触发 */ function clickUp(pageShowId){ var now = getPageNum(pageShowId,1); if(now==1){ nowPage = 1; }else if(now>1){ nowPage = parseInt(now) - 1; } setPageNum(pageShowId,1,nowPage); }

/** * 点击下一页时触发 * @param pageShowId * @returns */ function clickNext(pageShowId){ var now = getPageNum(pageShowId,1); var all = getPageNum(pageShowId,2); if(now==all){ nowPage = all; }else if(parseInt(now)<parseInt(all)){ nowPage = parseInt(now) + 1; }else{ nowPage = 1; } setPageNum(pageShowId,1,nowPage); }

/** * 获取分页(pageShowId 显示分页的id,index 1为当前页,2为总页) */ function getPageNum(pageShowId,index){ var pageText = $("#"+pageShowId+"").text(); var strs= new Array(); //定义一数组 strs = pageText.split("/"); if(index==1){ return strs[0]; }else if(index==2){ return strs[1]; } }

/** * 设置分页(pageShowId 显示分页的id,index 1为当前页,2为总页,str 是要修改的字符串) */ function setPageNum(pageShowId,index,str){ var pageText = $("#"+pageShowId+"").text(); var strs= new Array(); //定义一数组 strs = pageText.split("/"); if(index==1){ //修改当前页 $("#"+pageShowId+"").text(str+"/"+strs[1]); }else if(index==2){ //修改总页 $("#"+pageShowId+"").text(strs[0]+"/"+str); } }

mysql分页(ajax)

这个js基本不用改,直接引用然后配合下面的html代码,基本通用

4. 然后是html界面

mysql分页(ajax)

部门机构(支行)名称 已分配 价值 已发放 价值 库存 价值 已领取 未领取 已使用 未使用 使用中 操作
1/1

mysql分页(ajax)

其实只有

1/1

这行代码不能变,其它都是可以根据界面需求自己改的

5. 最后就是通过ajax将当前页数传入后台即可

mysql分页(ajax)

//获取支行礼品统计列表 function getBranchCouponDataList(nowPage){ $(".remove").remove(); $.ajax({ url:path + "/couponData/branchCouponData", type:"POST", dataType: "json", data:{nowPage:nowPage}, success:function(data){ //设置总页数 setPageNum("pageShow-up", 2, data[1]); var html = ''; for(var i=0; i<data[0].length; i++){ var info = data[0][i]; html +=" " +" "+info.branch_name+"" +" "+info.puted_num+"份" +" "+info.sum_price+"元" +" "+info.send_num+"份" +" "+info.send_price+"元" +" "+info.last_num+"份" +" "+info.last_price+"元" +" "+info.receive_num+"份" +" "+info.not_receive+"份" +" "+info.used_num+"份" +" "+info.notuse_num+"份" +" "+info.useing_num+"份" +" " +" " +" " +" "; } $(".ins").append(html); }, error:function(e){ alert("错误"); } }); }

在加载页面时,可以默认传1也就是第一页执行此方法

以上基本就能实现一个ajax分页,且通用性高,需要改动的地方不多

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这