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. UIView convertRect

    CGRect newRect = [self.view.window convertRect:self.blueView.frame fromView:self.redView]; NSLog(@&q ...

  2. 【Silverlight】Bing Maps开发应用与技巧一:地图打点与坐标控件(CoordControl)

    [Silverlight]Bing Maps开发应用与技巧一:地图打点与坐标控件(CoordControl) 使用Bing Maps Silverlight Control开发中,很多时候都需要实现在 ...

  3. 获取Access数据里所有表的名称和表的字段

    -------------//获取Access数据库表名        public void GetTableName()        {                string connSt ...

  4. Anaconda 安装和使用Numpy、Scipy、pandas、Scikit-learn

    Anaconda 安装和使用 https://www.cnblogs.com/liruihuan/p/9101613.html 最近看了些关于数据分析的书,想系统的整理下相关知识,算是学习笔记吧,也希 ...

  5. vs2010 下使用C#开发activeX控件

    1.创建一个类库 2.项目属性-应用程序-程序集信息-"使程序集COM可见"勾上; 3.项目属性-生成-"为COM互操作注册"勾上.(这个折腾一天,否则注册事件 ...

  6. mysql sql执行错误#1436 Thread stack overrun

    1.mysql调用存储过程  call proc1() 时报错:Thread stack overrun: 6656 bytes used of a 8496 byte stack, and 1280 ...

  7. Gold Coins

    http://poj.org/problem?id=2000 #include<stdio.h> ; int main() { int coin[N]; ,j,k; j = ; k = ; ...

  8. codevs1293送给圣诞夜的极光(bfs)

    1293 送给圣诞夜的极光  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold     题目描述 Description 圣诞老人回到了北极圣诞区,已经快到12点了 ...

  9. codevs2557张程易(背包dp)

    2557 张程易,编程易  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 张程易是一名神奇的魔法少女,在oier之中有着 ...

  10. hihocode 编程练习赛17

    1. f1 score 首先了解f1 score的计算方法, 我记得是学信息检索知道的, 然后简单处理就行. 由于我写的比较麻烦, 中间处理过程引入了一些除数为0的情况,导致错了很多次.其实是很简单的 ...