technicist

后端分页

1、在pom.xml文件添加pageHelper的依赖。

<dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.2.5</version>
</dependency>

2、pagehelper的使用,其实就两步

PageHelper.startPage(第几页,页大小,排序的字段+空格+排序关键字); //第三分参数可有可无(查看源码即可知道)

PageInfo<某实体类> pageInfo=new PageInfo<>(对应实体类的列表);

eg:
@Override
public PageInfo<User> pageUserList(int pageNum, int size) { String orderBy="username desc"; PageHelper.startPage(pageNum,size,orderBy); List<User> list=userMapper.list(); PageInfo<User> pageInfo=new PageInfo<>(list); return pageInfo; }

 

前端表格分页

Bootstrap-table是一个基于jquery的表格组件,功能丰富,中文参考网址为

https://www.bootstrap-table.com.cn/examples/welcome/index/, 英文参考网址https://bootstrap-table.com/,其中英文网址资料更齐全。

1、引入样式和js文件

<!--    引入相关css文件-->
    <link href="https://unpkg.com/bootstrap-table@1.16.0/dist/bootstrap-table.min.css"
          rel="stylesheet">
    <link rel="stylesheet"
          href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
<!--    引入相关js文件-->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
<script src="resources/bootstrap-table-1.16/bootstrap-table.min.js"></script>

2、bootstrap-table的使用

<!--用户表-->
<table id="userTable" lay-filter="table"></table>

<script>//将返回的json数据调整为表格所需的数据格式, bootstrap table渲染数据格式{total:xx,rows:[]}
    // res为服务器返回的数据
    function responseHandler(res) {
        console.log(res);
        var datas=[];
        datas.push({total:res.data.total,rows:res.data.list});
        return datas[0];
    }

    //动态生成操作区域的的按钮
    // row.id为每行数据的主键
    //操作
    function opFormatter(value, row, index) {
        var actions=[];
        actions.push(\'<a class="btn btn-primary btn-sm" href="javascript:void(0)" data-toggle="modal" data-target="#editModal" onclick="edit(\\'\'+row.userId+\'\\')"><i class="fa fa-edit"></i> 编辑</a> \');
        actions.push(\'<a class="btn btn-danger btn-sm" href="javascript:void(0)" data-toggle="modal" data-target="#deleteModal"  onclick="deleteId(\\'\'+row.userId+\'\\')"><i class="fa fa-remove"></i> 删除</a> \');
        actions.push(\'<a class="btn btn-success btn-sm" href="javascript:void(0)" data-toggle="modal" data-target="#addAuthorityModal"  onclick="addAuthority(\\'\'+row.userId+\'\\')"><i class="fa fa-adn"></i> 添加权限</a> \');
        actions.push(\'<a class="btn btn-warning btn-sm" href="javascript:void(0)" data-toggle="modal" data-target="#deleteAuthorityModal"  onclick="deleteAuthority(\\'\'+row.userId+\'\\')"><i class="fa fa-remove"></i> 删除权限</a> \');
        return actions.join(\'\');
    }

    //定义表格列与json数据字段的对应关系
    var columns = [
        {
            checkbox:true
        }, {
            title:"序号",
            formatter:function (value,row,index) {
                return index+1;
            }
        }, {
            field:"username",
            title:"用户名",
            sortables:true
        }, {
            field:"password",
            title:"密码",
            sortables:true,
            formatter: function (value, row, index) { //格式化输出
                return (row.password).substring(0,8)+"...";
             }
        }, {
            field:"email",
            title:"邮箱",
            sortables:true
        }, {
            field:"introduction",
            title:"介绍",
            sortables:true
        }, {
            field:"registerdate",
            title:"创建时间",
            sortables:true
        }, {
            field:"authorityList",
            title:"权限",
            sortables:true,
            formatter: function (value, row, index) { //格式化输出
                var html="";
                for(var i=0;i<row.authorityList.length;i++){
                    html+="<button class=\'btn-info\'disabled=\'disabled\'style=\'padding: 1px; margin-right: 2px;margin-top:1px;border:none;\'> "+row.authorityList[i].authority+" </button>";
                }
                return html;
            }
        }, {
            field:"status",
            title:"状态",
            sortables:true,
            formatter: function (value, row, index) { //格式化输出
                if(row.status==1){
                    return"<button class=\'btn-success\'disabled=\'disabled\'style=\'padding:3px; border:none;\'>已激活</button>";
                }else{
                    return"<button class=\'btn-secondary\'disabled=\'disabled\'style=\'padding:3px; border:none;\'>未激活</button>";
                }
            }
        }, {
            title:"操作",
            align:"center",
            formatter:opFormatter
        }
    ];

    //和后台交互的查询参数对象
    function queryParams(params) {
        var params = {
            pageSize: params.limit,                         //页面大小
            pageNum: (params.offset / params.limit) + 1,   //页码
            orderColumn: params.sort,        //排序列名
            sortOrder: params.order,    //排序命令(desc,asc)
            username:$("#queryuserName").val(),
            email:$("#queryEmail").val(),
            authorityId:$("#queryAuthority option:selected").val()
        };
        params[\'keyword\'] = "test";  // 传入查询分页中的关键词或者查询对象
        console.log(params);
        return params;
    }

    //获取table对象
    var table = $(\'#userTable\');
    function onloadTable(){
        var prefix = "";
        //定义表格的相关属性
        var options = {
            //  locale: $(\'#locale\').val(),
            height: 500,    //表格高度
            pagination: true,  // 启动分页
            sortable: true,   //启动排序
            pageList: "[5,10, 20, 50, All]",  //每页显示的数量
            pageSize: 10,    //默认每页的记录数
            striped: true,   //间隔显示颜色
            url: prefix+"/backstage/user/queryUserByMap",
            responseHandler: responseHandler,  //处理服务器返回的数据格式
            sidePagination: \'server\',  //服务器分页则修改为server
            clickToSelect: true,     //单击行进行选择
           // multipleSelectRow: true,   //允许多选
            pageNumber: 1,            //默认页面为第一页
            queryParams: queryParams,  //与服务器交互的查询参数
            theadClasses: \'thead-light\', //设置表头样式,thead-light,thead-dark,\'\'
            columns: columns           //设置每列的字段内容
        }
        table.bootstrapTable(\'destroy\').bootstrapTable(options);
        //$(\'#table\').init(options);//初始化表格
    }

    $(function () {
        onloadTable();
    });

    //刷新
    function Refresh(){
        onloadTable();
    }

    //编辑按钮
    function edit(id) {
        $.ajax({
            type:\'get\',
            url:\'/backstage/user/viewUserById/\'+id,
            contentType:\'application/json\',
            processData:false,
            success:function (res) {
                console.log(res.data);
                var user=res.data;
                $("#editId").val(user.userId);
                $("#edituserName").val(user.username);
                $("#editPassword").val(user.password);
                $("#editEmail").val(user.email);
                $("#editIntroduction").val(user.introduction);
                if(user.status==1){
                    $("input[value=\'1\']").attr(\'checked\',\'true\');
                }else{
                    $("input[value=\'0\']").attr(\'checked\',\'true\');
                }
            }
        });
    }

</script>
 

3、返回的json数据格式

4、效果图

 

文档12:(如有需要,留言问我要)

源码:

链接:https://pan.baidu.com/s/1SmtMula_yR_W_TeQl7tc5Q
提取码:ezfj

 

分类:

技术点:

相关文章: