• Bootstrap table后端分页(ssm版)


     

    说明
    bootstrap table可以前端分页,也可以后端sql用limit分页。
    这里讲的是后端分页,即实用limit。性能较好,一般均用这种
    源码下载地址:https://git.oschina.net/dshvv/pagination_byjava.git
    该文主要讲后端分页:
    1、前端每点击翻页按钮,就会向后端发出一次请求,后端只查询当前页数所需要的几条数据
    2、查询也是后端,会进入服务器

    源码 

    html

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <html>
        <head>
            <meta charset="utf-8">
            <title>图片上传</title>
            <!-- jq -->
            <script type="text/javascript" src="<%=basePath%>js/jquery-3.1.1.min.js"></script>
            
            <!-- bootstrap -->
            <link rel="stylesheet" href="<%=basePath%>/plugs/bootstrap/css/bootstrap.min.css">
            <script type="text/javascript" src="<%=basePath%>/plugs/bootstrap/js/bootstrap.min.js"></script>
            
            <!-- 分页插件 -->
            <link rel="stylesheet" href="<%=basePath%>plugs/bootstrap-table/bootstrap-table.min.css">
            <script type="text/javascript" src="<%=basePath%>plugs/bootstrap-table/bootstrap-table.min.js"></script>
            <script type="text/javascript" src="<%=basePath%>plugs/bootstrap-table/bootstrap-table-locale-all.min.js"></script>
        </head>
        <body>
            <div class="container" style="margin-top:100px">
                <div class="row">
                    <!-- 搜索框 -->
                    <div class="col-xs-6 pull-right">
                        <div class="input-group">
                            <input type="text" class=" form-control" name="age" placeholder="请输入年龄">
                            <input type="text" class=" form-control" name="name" placeholder="请输入姓名">
                            <span class="input-group-btn">
                                <button class="btn btn-default search" type="button">Go!</button>
                            </span>
                        </div>
                    </div>
                    <!-- 表格 -->
                    <div class="col-xs-12">
                        <table class="table table-striped table-bordered table-hover" ></table>
                    </div>
                </div>
            </div>
            <script type="text/javascript">
                class BstpTable{
                    constructor(obj) {
                        this.obj=obj;
                    }
                    inint(searchArgs){
                         //---先销毁表格 ---
                         this.obj.bootstrapTable('destroy');  
                         //---初始化表格,动态从服务器加载数据--- 
                         this.obj.bootstrapTable({
                            //【发出请求的基础信息】
                            url: '<%=basePath%>student/selectByFy',
                            method: 'post',
                            contentType: "application/x-www-form-urlencoded",
                            
                            
                            //【查询设置】
                            /* queryParamsType的默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort
                                              设置为 ''  在这种情况下传给服务器的参数为:pageSize,pageNumber */
                            queryParamsType:'', 
                            queryParams: function queryParams(params) {  
                              var param = {  
                                  pageNumber: params.pageNumber,    
                                  pageSize: params.pageSize
                              }; 
                              for(var key in searchArgs){
                                  param[key]=searchArgs[key]
                              }  
                              return param;                   
                            }, 
                            
                            //【其它设置】
                            locale:'zh-CN',//中文支持
                            pagination: true,//是否开启分页(*)
                            pageNumber:1,//初始化加载第一页,默认第一页
                            pageSize: 3,//每页的记录行数(*)
                            pageList: [2,3,4],//可供选择的每页的行数(*)
                            sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
                            showRefresh:true,//刷新按钮
                            
                            //【样式设置】
                            height: 300,//table的高度
                            //按需求设置不同的样式:5个取值代表5中颜色['active', 'success', 'info', 'warning', 'danger'];
                            rowStyle: function (row, index) {
                                var style = "";
                                if (row.name=="小红") {style='success';}
                                return { classes: style }
                            },
                            
                            //【设置列】
                            columns: [
                             {field: 'id',title: 'id'}, 
                             {field: 'name',title: '姓名'},
                             {field: 'age',title: '年龄'},
                             {field: 'tool',title: '操作', align: 'center',
                                formatter:function(value,row,index){
                                    var element = 
                                    "<a class='edit' data-id='"+row.id +"'>编辑</a> "+ 
                                    "<a class='delet' data-id='"+row.id +"'>删除</a> ";
                                    return element;  
                                } 
                              }
                            ]
                        })
                     }
                }
                
                var bstpTable=new BstpTable($("table"));
                bstpTable.inint({})
                
                $(".search").click(function(){
                    var searchArgs={
                         name:$("input[name='name']").val(),
                         age:$("input[name='age']").val()
                    }
                    bstpTable.inint(searchArgs)
                })
            </script>
        </body>
    </html>

    controller

    package com.dsh.controller;
    
    import java.util.HashMap;
    import java.util.Map;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import com.dsh.service.StudentService;
    
    @Controller
    @RequestMapping("student")
    public class StudentController {
        @Autowired
        private StudentService studentService;
    
        @RequestMapping("selectByFy")
        @ResponseBody
        public  Map<String,Object> selectByFy(int pageSize,int pageNumber,String name,Integer age){
            /*所需参数*/
            Map<String, Object> param=new HashMap<String, Object>();
            int a=(pageNumber-1)*pageSize;
            int b=pageSize;
            param.put("a", a);
            param.put("b", b);
            param.put("name", name);
            param.put("age", age);
            return studentService.selectByFy(param);
        }
    }

    service

    package com.dsh.service.imp;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import com.dsh.mapper.StudentCustomMapper;
    import com.dsh.pojo.Student;
    import com.dsh.service.StudentService;
    
    @Service
    public class StudentServiceImp implements StudentService {
        @Autowired
        private StudentCustomMapper studentDao;
    
        @Override
        public Map<String,Object> selectByFy(Map<String, Object> param) {
            //bootstrap-table要求服务器返回的json须包含:totlal,rows
            Map<String,Object> result = new HashMap<String,Object>();
            int total=studentDao.selectByFy(null).size();
            List<Student> rows=studentDao.selectByFy(param);
            result.put("total",total);
            result.put("rows",rows);
            return result;
        }
    }

    mapper.xml(即dao)

    <?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.dsh.mapper.StudentCustomMapper" >
        <select id="selectByFy" resultType="com.dsh.pojo.Student" parameterType="Map">
            SELECT *
            FROM student
            <if test="a!=null">
                <where> 
                    <if test="name!=null and name!=''"> name=#{name}</if>
                    <if test="age!=null and age!=''">AND  age=#{age}</if>
                </where>
                LIMIT #{a},#{b}
            </if>
        </select>
    </mapper>
  • 相关阅读:
    装机常用
    配置Linux服务器TensorFlow环境的问题汇总
    pycharm在C盘创建.pycharm2019.3严重占用内存的解决方法
    更新2020-02-29 --ECCV2018 Burst image deblurring using permutation invariant cnn
    代码解读 Aittala_ECCV18_Burst Image Deblurring Using Permutation Invariant Convolutional Neural Networks
    深度学习基础知识
    Image Alignment Toolbox
    Matlab安装编译器
    Aurora Equation在word中出现latex Problem Running的解决
    model中的一些处理
  • 原文地址:https://www.cnblogs.com/dshvv/p/9646174.html
Copyright © 2020-2023  润新知