pageno
(第几页数据),pagesize
(每页的条数);这里返回的是json数据接口,实现方法在service层
@responsebody @getmapping("/allpage") public string findallpage( @requestparam(required = true,defaultvalue = "1") integer pageno, @requestparam(required = false,defaultvalue = "5") integer pagesize) { return customerservice.findallpage(pageno,pagesize); }
customerserviceimpl.java
@override public string findallpage(integer pageno, integer pagesize) { list<customer> customers = customerdao.findall(); list<map<string, string>> resultlist = new arraylist<>(); pageutil<customer> pageutil = new pageutil<>(); for (customer customer : pageutil.pagelist(customers, pageno, pagesize){ resultlist.add(itercustomer(customer)); } return jsonutil.tojson(resultlist); }
==pageutil.java==
public class pageutil<t> { private int beginindex;//起始索引 private int endindex;//终止索引 public list<t> pagelist(list<t> list, int pageno, int pagesize) { int size = list.size(); beginindex = (pageno - 1) * pagesize; endindex = pageno * pagesize > size ? size : pageno * pagesize; list<t> resultlist = list.sublist(beginindex, endindex); return resultlist; } }
itercustomer()方法
public map<string, string> itercustomer(customer customer) { map<string, string> resultmap = new hashmap<>(); resultmap.put("id", customer.getid().tostring()); resultmap.put("name", customer.getname()); resultmap.put("phone", customer.getphone()); resultmap.put("email", customer.getemail()); return resultmap; }
jsonutil.java
public class jsonutil { //使用jackson 转换 json 数据的第一步 private static objectmapper mapper = new objectmapper(); static string jsonstring=null; public static string tojson(object object){ try { //jackson转任意object对象 为json 字符串 jsonstring = mapper.writevalueasstring(object); } catch (jsonprocessingexception e) { e.printstacktrace(); } return jsonstring; } }
第一种方法在数据量比较小时可以使用,但当数据量非常大时,如果我们仅需要某一页的几条数据,而去查找所有数据,显得没有必要,或者说代价太大,所有我们现在采用第二种分页方式;
第二种方法与第一种类似,获取前端传来的页码和每页显示的条数,通过自定义sql语句查询数据库来得到需要的数据;
sql分页参考:
分析
int maxpage =(int) math.ceil(count/pagesize.doublevalue());
customercontroller.java
@controller public class customercontroller { @autowired customerservice customerservice; @responsebody @getmapping("/allsql") public string findallpagesql( @requestparam(required = true,defaultvalue = "1") integer pageno, @requestparam(required = false,defaultvalue = "5") integer pagesize) { /** * pagesize 是每页显示的条数 * pageno 是页码,sql分页传递的第一个参数是开始的索引; * 计算公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数 */ //数据总数 int count = customerservice.count(); //计算最大页码 int maxpage =(int) math.ceil(count/pagesize.doublevalue()); //当前页码超出最大页码返回最大页码值: pageno = pageno>maxpage?maxpage:pageno; //分页开始的索引值 int index = (pageno - 1) * pagesize > count ? count : (pageno - 1) * pagesize; return customerservice.findallpagesql(index, pagesize); } }
customerserviceimpl.java
@service public class customerserviceimpl implements customerservice { @autowired customerdao customerdao; @override public string findallpagesql(integer index, integer pagesize) { return jsonutil.tojson(customerdao.findallpagesql(index, pagesize)); } }
customerdao.java
public interface customerdao { list<customer> findallpagesql(integer index,integer pagesize); }
customermapper.xml
注意,这里参数为两个,获取参数时要使用#{param1}#{param2},或者通过封装map的形式传参;
sql分页参考:
<?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.vue.dao.customerdao"> <select id="findallpagesql" parametertype="java.lang.integer" resulttype="com.vue.entity.customer"> select * from t_customer limit #{param1},#{param2} </select> </mapper>
mapper.xml映射文件获取多个参数参考:
mybatis中的mapper.xml映射文件sql查询接收多个参数 或
mybatis中的mapper.xml映射文件sql查询接收多个参数
如对本文有疑问, 点击进行留言回复!!
ScrollView和RecyclerView的滑动事件处理
配置JAVA环境+安装Android Studio全过程+踩坑记录
Android P Camera2当SD卡被拔出来自动切换到内部存储
android 多个edittext 判空监听 让Button动态是否可点击
Android开源项目滚轮选择器WheelPicker的基本用法总结
网友评论