• BootStrap Table和Mybatis Plus实现服务端分页


    一、后台java代码(Mybatis Plus分页)

      (1)Mybatis Plus分页的配置,在mybatis的xml文件中增加如下配置(Mybatis Plus官方文档:http://baomidou.oschina.io/mybatis-plus-doc/#/quick-start

         <!-- 插件配置项 -->
            <property name="plugins">
                <array>
                    <!-- 分页插件配置 -->
                    <bean id="paginationInterceptor"
                        class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                        <property name="dialectType" value="mysql" />
                    </bean>
                </array>
            </property>

      (2)mapper

      List<Entity> selectPageById(Pagination page,String id);//Pagination 为Mybatis plus分页插件的实体

      (3)service

        /**
         * 分页查询
         */
        public Page<Entity> selectPageById(Page<Entity> page,Stringid) {
            Page<Entity> limitPage = page.setRecords(informationCodeMapper.selectPageById(page,id));
            return limitPage;
        }

      (3)controller(注意:mybatis plus的分页时,查询的数据存放在records属性中)

       /**
         * BootStrap Table分页
         * @param pageNumber 页数
         * @param pageSize 每页显示数据的条数
         * @param request
         * @return
         */
        @RequestMapping("/pageTest.shtml")
        @ResponseBody
        public String informationList(String pageNumber, String pageSize, String id, HttpServletRequest request) {
            if(!StringUtils.isNotBlank(pageNumber) & !StringUtils.isNotBlank(pageSize)){
                pageNumber="1";
                pageSize="10";
            }
            //分页 pageNumber--》页数    pageSize--》每页显示数据的条数
            int page_Num = Integer.parseInt(pageNumber);
            int page_Size = Integer.parseInt(pageSize);
            Page<Entity> page = new Page<Entity>(page_Num, page_Size);
            Page<Entity> selectPageByCsdbId = informationService.selectPageById(page, csdbId);
            //bootstrap-table要求服务器返回的json须包含:total,rows
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("total", selectPageById.getTotal());
            map.put("rows", selectPageById.getRecords());
            return JSON.toJSONString(map);
        }

    二、前台js (BootStrap Table分页)

    $(function(){
        /*boostrap table*/
        $('#informationTable').bootstrapTable({
            columns: [{
                field: 'checkBox',
                checkbox:true,
                align:"center"
            }, {
                field: 'id',
                title: 'ID',
                visible : false,//隐藏该列
                align:"center"            
            }, {
                field: 'informationCode',
                title: 'Information Code',
                align:"center",
            }, {
                field: 'infoName',
                title: 'InfoName',
                align:"center",
            },{
                field:"suggesteddmtype",
                title:"Suggested Dm Type",
                align:"center",
                class:"table-select2",
            },{
                field:"operation",
                title:"操作",
                align:"center",
                formatter : "actionFormatter",//自定义方法
            }],
            method: 'post',
            contentType: "application/x-www-form-urlencoded",//必须要有!因为bootstap table使用的是ajax方式获取数据,这时会将请求的content type默认设置为 text/plain,这样在服务端直接通过 @RequestParam参数映射是获取不到的。
            url:"pageTest.shtml?time="+getTimestamp,//要请求数据的文件路径,加时间戳,防止读取缓存数据
            sortable: true, //是否启用排序 
            sortOrder: "informationCode asc", //排序方式
            pagination: true,//是否开启分页(*)启动分页,必须设为true
            queryParamsType:'',//注意:查询参数组织方式,默认值为 'limit',在默认情况下 传给服务端的参数为:offset,limit,sort 。 设置为 '' 在这种情况下传给服务器的参数为:pageSize,pageNumber
            queryParams:queryParams,//请求服务器时所传的参数
            pageNumber:1,//初始化加载第一页,默认第一页
            pageSize: 10,//每页的记录行数(*)
            pageList: [10,20,30,50],//可供选择的每页的行数(*)
            sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
            toolbar:".custom-btn-list"
        });
    })
    
    //得到查询的参数
    function queryParams (params) {
        var temp = {  //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
            pageSize: params.pageSize,  //页面大小
            pageNumber: params.pageNumber, //页码
            searchText : params.searchText,
        };
        return temp;
    };}

    三、结果展示

  • 相关阅读:
    socket详解(二)----实例和多线程,线程池使用
    OpenJDK和JDK区别
    单词(11)
    程序员到项目经理:从内而外的提升(比较全面的介绍)
    如何成为一名自然语言处理工程师
    权限设计文章汇总
    ECharts+百度地图,默认选中 卫星地图
    Echarts3.0 引入百度地图(转载)
    echarts地图 鼠标滚动控制缩放大小比例(转载)
    echarts散点图 不显示问题 或宽度为0问题
  • 原文地址:https://www.cnblogs.com/Amaris-Lin/p/7743825.html
Copyright © 2020-2023  润新知