bootstrap table分页的两种方式:

前端分页:一次性从数据库查询所有的数据,在前端进行分页(数据量小的时候或者逻辑处理不复杂的话可以使用前端分页)

服务器分页:每次只查询当前页面加载所需要的那几条数据

bootstrap 下载地址:bootstrap下载

bootstrap-table 下载地址:bootstrap-table下载

jquery下载地址:jquery下载

分页效果(请忽略样式)

一:准备js、css等文件

▶ 将下载的文档直接放入webapp目录下

▶页面引入需要的js、css

  1.  
    <!-- 引入的css文件 -->
  2.  
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />
  3.  
    <link href="bootstrap-table/dist/bootstrap-table.min.css"
  4.  
    rel="stylesheet">
  5.  
    <!-- 引入的js文件 -->
  6.  
    <script src="jquery/jquery.min.js"></script>
  7.  
    <script src="bootstrap/js/bootstrap.min.js"></script>
  8.  
    <script src="bootstrap-table/dist/bootstrap-table.min.js"></script>
  9.  
    <script src="bootstrap-table/dist/locale/bootstrap-table-zh-CN.min.js"></script>

二:html页面标签内容

  1.  
    <div class="panel panel-default">
  2.  
    <div class="panel-heading">
  3.  
    查询条件
  4.  
    </div>
  5.  
    <div class="panel-body form-group" style="margin-bottom:0px;">
  6.  
    <label class="col-sm-1 control-label" style="text-align: right; margin-top:5px">姓名:</label>
  7.  
    <div class="col-sm-2">
  8.  
    <input type="text" class="form-control" name="Name" id="search_name"/>
  9.  
    </div>
  10.  
    <label class="col-sm-1 control-label" style="text-align: right; margin-top:5px">手机号:</label>
  11.  
    <div class="col-sm-2">
  12.  
    <input type="text" class="form-control" name="Name" id="search_tel"/>
  13.  
    </div>
  14.  
    <div class="col-sm-1 col-sm-offset-4">
  15.  
    <button class="btn btn-primary" id="search_btn">查询</button>
  16.  
    </div>
  17.  
    </div>
  18.  
    </div>
  19.  
    <table id="mytab" class="table table-hover"></table>

三:JS分页代码

  1.  
    $('#mytab').bootstrapTable({
  2.  
    method : 'get',
  3.  
    url : "user/getUserListPage",//请求路径
  4.  
    striped : true, //是否显示行间隔色
  5.  
    pageNumber : 1, //初始化加载第一页
  6.  
    pagination : true,//是否分页
  7.  
    sidePagination : 'client',//server:服务器端分页|client:前端分页
  8.  
    pageSize : 4,//单页记录数
  9.  
    pageList : [ 5, 10, 20, 30 ],//可选择单页记录数
  10.  
    showRefresh : true,//刷新按钮
  11.  
    queryParams : function(params) {//上传服务器的参数
  12.  
    var temp = {//如果是在服务器端实现分页,limit、offset这两个参数是必须的
  13.  
    limit : params.limit, // 每页显示数量
  14.  
    offset : params.offset, // SQL语句起始索引
  15.  
    //page : (params.offset / params.limit) + 1, //当前页码
  16.  
     
  17.  
    Name : $('#search_name').val(),
  18.  
    Tel : $('#search_tel').val()
  19.  
    };
  20.  
    return temp;
  21.  
    },
  22.  
    columns : [ {
  23.  
    title : '登录名',
  24.  
    field : 'loginName',
  25.  
    sortable : true
  26.  
    }, {
  27.  
    title : '姓名',
  28.  
    field : 'name',
  29.  
    sortable : true
  30.  
    }, {
  31.  
    title : '手机号',
  32.  
    field : 'tel',
  33.  
    }, {
  34.  
    title : '性别',
  35.  
    field : 'sex',
  36.  
    formatter : formatSex,//对返回的数据进行处理再显示
  37.  
    }, {
  38.  
    title : '操作',
  39.  
    field : 'id',
  40.  
    formatter : operation,//对资源进行操作
  41.  
    } ]
  42.  
    })
  43.  
     
  44.  
    //value代表该列的值,row代表当前对象
  45.  
    function formatSex(value, row, index) {
  46.  
    return value == 1 ? "男" : "女";
  47.  
    //或者 return row.sex == 1 ? "男" : "女";
  48.  
    }
  49.  
     
  50.  
    //删除、编辑操作
  51.  
    function operation(value, row, index) {
  52.  
    var htm = "<button>删除</button><button>修改</button>"
  53.  
    return htm;
  54.  
    }
  55.  
     
  56.  
    //查询按钮事件
  57.  
    $('#search_btn').click(function() {
  58.  
    $('#mytab').bootstrapTable('refresh', {
  59.  
    url : 'user/getUserListPage'
  60.  
    });
  61.  
    })

四:bootstrap-table 实现前端分页

▶ 修改JS分页代码中某些属性

  1.  
    sidePagination:'client',
  2.  
    queryParams : function (params) {
  3.  
    var temp = {
  4.  
    name:$('#search_name').val(),
  5.  
    tel:$('#search_tel').val()
  6.  
    };
  7.  
    return temp;
  8.  
    },

▶ 定义user对象

  1.  
    package com.debo.common;
  2.  
     
  3.  
    public class User {
  4.  
     
  5.  
    private Integer id;
  6.  
    private String loginName;
  7.  
    private String name;
  8.  
    private String tel;
  9.  
    private Integer sex;
  10.  
    public Integer getId() {
  11.  
    return id;
  12.  
    }
  13.  
    public void setId(Integer id) {
  14.  
    this.id = id;
  15.  
    }
  16.  
    public String getLoginName() {
  17.  
    return loginName;
  18.  
    }
  19.  
    public void setLoginName(String loginName) {
  20.  
    this.loginName = loginName;
  21.  
    }
  22.  
    public String getName() {
  23.  
    return name;
  24.  
    }
  25.  
    public void setName(String name) {
  26.  
    this.name = name;
  27.  
    }
  28.  
    public String getTel() {
  29.  
    return tel;
  30.  
    }
  31.  
    public void setTel(String tel) {
  32.  
    this.tel = tel;
  33.  
    }
  34.  
    public Integer getSex() {
  35.  
    return sex;
  36.  
    }
  37.  
    public void setSex(Integer sex) {
  38.  
    this.sex = sex;
  39.  
    }
  40.  
    }

▶ 服务器Controller层代码

  1.  
    /**
  2.  
    *直接一次性查出所有的数据,返回给前端,bootstrap-table自行分页
  3.  
    */
  4.  
    @RequestMapping("/getUserListPage")
  5.  
    @ResponseBody
  6.  
    public List<User> getUserListPage(User user,HttpServletRequest request){
  7.  
    List<User> list = userService.getUserListPage(user);
  8.  
    return list;
  9.  
    }

▶ mabatis语句

  1.  
    <select id="getUserListPage" resultType="com.debo.common.User">
  2.  
    SELECT * FROM user WHERE 1 = 1
  3.  
    <if test="name!=null and name !=''">
  4.  
    AND name LIKE CONCAT('%',#{name},'%')
  5.  
    </if>
  6.  
    <if test="tel!=null and tel !=''">
  7.  
    AND tel = #{tel}
  8.  
    </if>
  9.  
    </select>

五:bootstrap-table 实现服务器端分页

▶ 设置JS分页代码中的某些属性

  1.  
    sidePagination:'server',
  2.  
    queryParams : function (params) {
  3.  
    var temp = {
  4.  
    limit : params.limit, // 每页显示数量
  5.  
    offset : params.offset, // SQL语句起始索引
  6.  
    page: (params.offset / params.limit) + 1, //当前页码
  7.  
     
  8.  
    Name:$('#search_name').val(),
  9.  
    Tel:$('#search_tel').val()
  10.  
    };
  11.  
    return temp;
  12.  
    },

▶ 封装公共的page对象,并让user对象继承page对象

  1.  
    package com.debo.common;
  2.  
     
  3.  
    public class Page {
  4.  
    //每页显示数量
  5.  
    private int limit;
  6.  
    //页码
  7.  
    private int page;
  8.  
    //sql语句起始索引
  9.  
    private int offset;
  10.  
    public int getLimit() {
  11.  
    return limit;
  12.  
    }
  13.  
    public void setLimit(int limit) {
  14.  
    this.limit = limit;
  15.  
    }
  16.  
    public int getPage() {
  17.  
    return page;
  18.  
    }
  19.  
    public void setPage(int page) {
  20.  
    this.page = page;
  21.  
    }
  22.  
    public int getOffset() {
  23.  
    return offset;
  24.  
    }
  25.  
    public void setOffset(int offset) {
  26.  
    this.offset = offset;
  27.  
    }
  28.  
     
  29.  
    }
  1.  
    package com.debo.common;
  2.  
     
  3.  
    public class User extends Page{
  4.  
     
  5.  
    private Integer id;
  6.  
    private String loginName;
  7.  
    private String name;
  8.  
    private String tel;
  9.  
    private Integer sex;
  10.  
    public Integer getId() {
  11.  
    return id;
  12.  
    }
  13.  
    public void setId(Integer id) {
  14.  
    this.id = id;
  15.  
    }
  16.  
    public String getLoginName() {
  17.  
    return loginName;
  18.  
    }
  19.  
    public void setLoginName(String loginName) {
  20.  
    this.loginName = loginName;
  21.  
    }
  22.  
    public String getName() {
  23.  
    return name;
  24.  
    }
  25.  
    public void setName(String name) {
  26.  
    this.name = name;
  27.  
    }
  28.  
    public String getTel() {
  29.  
    return tel;
  30.  
    }
  31.  
    public void setTel(String tel) {
  32.  
    this.tel = tel;
  33.  
    }
  34.  
    public Integer getSex() {
  35.  
    return sex;
  36.  
    }
  37.  
    public void setSex(Integer sex) {
  38.  
    this.sex = sex;
  39.  
    }
  40.  
    }

▶ 封装返回数据实体类

  1.  
    package com.debo.common;
  2.  
     
  3.  
    import java.util.ArrayList;
  4.  
    import java.util.List;
  5.  
     
  6.  
    public class PageHelper<T> {
  7.  
    //实体类集合
  8.  
    private List<T> rows = new ArrayList<T>();
  9.  
    //数据总条数
  10.  
    private int total;
  11.  
     
  12.  
    public PageHelper() {
  13.  
    super();
  14.  
    }
  15.  
     
  16.  
    public List<T> getRows() {
  17.  
    return rows;
  18.  
    }
  19.  
     
  20.  
    public void setRows(List<T> rows) {
  21.  
    this.rows = rows;
  22.  
    }
  23.  
     
  24.  
    public int getTotal() {
  25.  
    return total;
  26.  
    }
  27.  
     
  28.  
    public void setTotal(int total) {
  29.  
    this.total = total;
  30.  
    }
  31.  
     
  32.  
    }

▶ 服务器Controller层代码

  1.  
    @RequestMapping("/getUserListPage")
  2.  
    @ResponseBody
  3.  
    public PageHelper<User> getUserListPage(User user,HttpServletRequest request) {
  4.  
     
  5.  
    PageHelper<User> pageHelper = new PageHelper<User>();
  6.  
    // 统计总记录数
  7.  
    Integer total = userService.getTotal(user);
  8.  
    pageHelper.setTotal(total);
  9.  
     
  10.  
    // 查询当前页实体对象
  11.  
    List<User> list = userService.getUserListPage(user);
  12.  
    pageHelper.setRows(list);
  13.  
     
  14.  
    return pageHelper;
  15.  
    }

▶ mybatis语句

  1.  
    <select id="getTotal" resultType="int">
  2.  
    SELECT count(1) FROM user WHERE 1 = 1
  3.  
    <if test="name!=null and name !=''">
  4.  
    AND name LIKE CONCAT('%',#{name},'%')
  5.  
    </if>
  6.  
    <if test="tel!=null and tel !=''">
  7.  
    AND tel = #{tel}
  8.  
    </if>
  9.  
    </select>
  10.  
     
  11.  
    <select id="getUserListPage" resultType="com.debo.common.User">
  12.  
    SELECT * FROM user WHERE 1 = 1
  13.  
    <if test="name!=null and name !=''">
  14.  
    AND name LIKE CONCAT('%',#{name},'%')
  15.  
    </if>
  16.  
    <if test="tel!=null and tel !=''">
  17.  
    AND tel = #{tel}
  18.  
    </if>
  19.  
    LIMIT #{offset},#{limit}
  20.  
    </select>

tip:增、删、改操作后重新加载表格

$("#mytab").bootstrapTable('refresh', {url : url});

bootstrap table分页(前后端两种方式实现)的更多相关文章

  1. bootstrap-paginator分页插件的两种使用方式

    分页有两种方式: 1. 前台分页:ajax一次请求获取全部数据,适合少量数据(万条数据以下): $.ajax({ type: "GET", url: "",// ...

  2. 斑马打印机客户端GET和POST,以及后端两种打印方式。

    斑马打印机客户端GET和POST,以及后端两种打印方式. 背景环境:打印机安装在客户端外网.当用户登录时,通过ajax取服务器数据,返回打印机命令,然后客户端通过JS发送给斑马打印机. 1.使用Get ...

  3. easyUI之datagrid绑定后端返回数据的两种方式

    先来看一下某一位大佬留下的easyUI的API对datagrid绑定数据的两种方式的介绍. 虽然精简,但是,很具有“师傅领进门,修行靠个人”的精神,先发自内心的赞一个. 但是,很多人和小编一样,第一次 ...

  4. 基于layPage分页插件浅析两种分页方式

    最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验 在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据.采用分页一般基于两种不同的需求,一种是数据量不算很大,但是在页面展示 ...

  5. Sql Server 聚集索引扫描 Scan Direction的两种方式------FORWARD 和 BACKWARD

    最近发现一个分页查询存储过程中的的一个SQL语句,当聚集索引列的排序方式不同的时候,效率差别达到数十倍,让我感到非常吃惊 由此引发出来分页查询的情况下对大表做Clustered Scan的时候, 不同 ...

  6. Django学习——ajax发送其他请求、上传文件(ajax和form两种方式)、ajax上传json格式、 Django内置序列化(了解)、分页器的使用

    1 ajax发送其他请求 1 写在form表单 submit和button会触发提交 <form action=""> </form> 注释 2 使用inp ...

  7. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

  8. Log4Net日志记录两种方式

     简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具.     log4net是Ap ...

  9. Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...

随机推荐

  1. Android从源码看ListView的重用机制

    不管是android还是iOS,列表视图应该是最复杂的控件了.android中的listview从命名能够看出是个一维数组,而iOS中的tableview则是二维数组.但事实上须要注意的地方是差点儿相 ...

  2. [javase学习笔记]-7.7 thiskeyword的细节与应用

    这一节我们接着上一节来继续学习thiskeyword. 我们之前在7.5节中的构造函数应注意的细节中提到过一个细节就是构造函数能够调用一般函数,但一般函数不能直接调用构造函数.可是我们没有深究构造函数 ...

  3. Erlang下与其他程序和语言的通信机制(2)

    前面聊了普通端口,今天聊下链入式驱动端口,以及NIFs. 链入式驱动端口 如上图所示,链入式驱动端口与Erlang虚拟机存在于同一个OS进程中. 在Erlang这边与普通端口类似,所有与链入式驱动端口 ...

  4. STM32跑马灯

    #include "stm32f10x.h" #include "led.h" #include "delay.h" #include &q ...

  5. 为PhoneGap写一个android插件

    为PhoneGap写一个android插件,要怎么做? 其实这句话应该反过来说,为android写一个PhoneGap插件,要怎么做? 这里以最简单的Hello World!为例,做个说明: 1.第一 ...

  6. sql_server_action

    ''' SELECT * FROM Info_Roles WHERE Flag=1 LIMIT 2; select top y * from 表 where 主键 not in(select top ...

  7. 描述一下ArrayList和LinkedList各自实现和区别

    ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: 一.同步性 ArrayList,LinkedList是不同步 ...

  8. LuoguP3261 [JLOI2015]城池攻占

    题目描述 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池.这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖,其中 fi &l ...

  9. [Swift通天遁地]八、媒体与动画-(13)CoreText框架实现图文混排

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  10. python3+request接口自动化框架

    首次书写博客,记录下写的自动化接口框架,框架比较简单,哈哈哈,算是记录下历程把!~~~ 一.本次框架由python3.6 书写 1.准备代码环境,下载python3.6    下载地址:https:/ ...