因为数据被二次处理,不能通过mybatis-pagehelper插件(针对数据库查询分页)直接分页。所以网上找了个分页工具类,实现了在layuiAdmin框架中实现分页效果。
================================================================================
效果如下图所示:
================================================================================
1.在框架src->views目录下写前端页面html页面(只写了主要部分,只是想让大家了解大致过程,有需要可参考layuiAdmin框架源码内容)
<table id="seeper" lay-filter="seeper"></table>
<script>
layui.use('dispatcher', layui.factory('seeperforecast')).use(['admin', 'seeperforecast', 'table', 'util', 'element'], function() {
var $ = layui.$,
admin = layui.admin,
view = layui.view,
table = layui.table,
form = layui.form,
element = layui.element; //Tab的切换功能
form.render(null, 'app-content-task');
});
</script>
src->controller目录下创建(html页面调用的)seeperforecast.js函数
layui.define(["table", "form", "element"], function (e) {
var t = (layui.$, layui.admin),
i = layui.view,
r = layui.table,
l = layui.form,
o = layui.element;
r.render({
elem: "#seeper",
url: "/getSeeperLevel0",
method: "GET",
cols: [
[{
field: "id",
width: 80,
title: "序号",
align: "center"
}, {
field: "lat",
minwidth: 200,
align: "center",
title: "纬度"
}, {
field: "lng",
minwidth: 200,
align: "center",
title: "经度"
}, {
field: "num",
minWidth: 100,
title: "水深",
align: "center"
},
{
field: "location",
minWidth: 100,
title: "位置",
align: "center"
}
]
],
page: !0,
limit: 15,//页面限制的数据条数
limits: [15, 20, 50, 100],
text: "对不起,加载出现异常!",
done: function () {
o.render("progress")
}
}),, e("seeperforecast", {})
});
2.Utils包下创建PageUtil自定义分页类(直接copy就行)
package org.boot.city.utils;
import java.util.List;
/**
* 自定义List分页工具
*/
public class PageUtil {
/**
* 开始分页
*
* @param list
* @param pageNum 页码
* @param pageSize 每页多少条数据
* @return
*/
public static List startPage(List list, Integer pageNum, Integer pageSize) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
Integer count = list.size(); //记录总数
Integer pageCount = 0; //页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; //开始索引
int toIndex = 0; //结束索引
if (pageNum > pageCount) {
pageNum = pageCount;
}
if (!pageNum.equals(pageCount)) {
fromIndex = (pageNum - 1) * pageSize;
toIndex = fromIndex + pageSize;
} else {
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
List pageList = list.subList(fromIndex, toIndex);
return pageList;
}
}
3.controller层写前端响应函数
@RequestMapping(value = "getSeeperLevel0", method = RequestMethod.GET)
@ResponseBody
public Msg getSeeperLevel0(Integer page, Integer limit) {//page和limit都是js函数传过来的
###//写你从数据库直接获取的内容,并进行相应处理
List<###> returnData = new ArrayList<>();//装返回的信息
###//将处理结果给returnData
//因为数据被二次处理,不能通过mybatis-pagehelper插件(针对数据库查询分页)直接分页,所以需要手动添加一个list分页工具类
List pageList = PageUtil.startPage(returnData, page, limit); //returnData表示要分页的内容,即返回的信息。需要注意的是,它的成员对象必须和js中定义的field名一致。
long total = returnData.size;//返回的数据的总条数
Msg msg = new Msg();
if (pageList.size() == 0) {
msg.setCode(1);
msg.setMsg("无数据");
} else {
msg.setCode(0);
msg.setMsg("处理成功");
}
msg.setData(pageList);
msg.setCount(total);
return msg;
}
note:由于贴的代码不全,如果有需要可以私信我,看见了就回。