layuiAdmin中使用自定义分页工具类实现分页效果

因为数据被二次处理,不能通过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:由于贴的代码不全,如果有需要可以私信我,看见了就回。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值