Datatable的分页入门

2024-05-16 16:18
文章标签 入门 分页 datatable

本文主要是介绍Datatable的分页入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源码请见1.Datatable的分页入门

一、 目标

使用mybatis获取数据库中的数据,使用datatable对页面进行分页展示。

二、 使用到的资源
  1. datatable的资源包(如我用的DataTables-1.10.15.zip)。(下载地址datatable中文地址 OR datatable offical site)
三、 项目结构

这里写图片描述
webapp下的extensions和media目录是拷贝的datatables资源中的2个目录。

四、 项目部分代码说明
4.1 使用README.sql创建数据库
#create a database
create database UserCenter;
#create a table
use UserCenter;
create table user(id int primary key auto_increment,name varchar(50),passwd varchar(50),age int
);
#add much data
insert into user(name,passwd,age) value('hash','1234',21);
insert into user(name,passwd,age) value('maven','1234',11);
insert into user(name,passwd,age) value('memorylorry','1234',22);
insert into user(name,passwd,age) value('lucy','1234',41);
insert into user(name,passwd,age) value('duck','1234',11);
insert into user(name,passwd,age) value('salary','1234',13);
insert into user(name,passwd,age) value('monkey','1234',51);
insert into user(name,passwd,age) value('dog','1234',22);
insert into user(name,passwd,age) value('march','1234',51);
insert into user(name,passwd,age) value('benz','1234',21);
insert into user(name,passwd,age) value('cookie','1234',12);
insert into user(name,passwd,age) value('fun','1234',55);
4.2 前台要装载datatable

通过columns数组选择要加载的列名;通过设置processing、serverSide、ajax三个参数加载数据。

$('#example').DataTable({columns : [ {"sWidth" : "100px",bSearchable : false,bSortable : false,data : 'id'}, {"sWidth" : "100px",bSearchable : true,bSortable : false,data : 'name'}, {"sWidth" : "100px",bSearchable : false,bSortable : false,data : 'passwd'}, {"sWidth" : "100px",bSearchable : false,bSortable : false,data : 'age'} ],"processing" : true,"serverSide" : true,"ajax" : "../getUserContentByMyself"});

这个ajax提出的请求时,会使用GET方式向服务器发送一些参数,如下所示,尤其是两个加黑的参数,表示页索引和页大小:

http://localhost:8080/DatatableTest/getUserContentByMyself
?draw=1&columns[0][data]=id&columns[0][name]=&columns[0][searchable]=false
&columns[0][orderable]=false&columns[0][search][value]=&columns[0][search][regex]=false
&columns[1][data]=name&columns[1][name]=&columns[1][searchable]=true
&columns[1][orderable]=false&columns[1][search][value]=&columns[1][search][regex]=false
&columns[2][data]=passwd&columns[2][name]=&columns[2][searchable]=false
&columns[2][orderable]=false&columns[2][search][value]=&columns[2][search][regex]=false
&columns[3][data]=age&columns[3][name]=&columns[3][searchable]=false
&columns[3][orderable]=false&columns[3][search][value]=&columns[3][search][regex]=false
&order[0][column]=0&order[0][dir]=asc&start=0&length=10&search[value]=
&search[regex]=false&_=1497077565075

4.3 后台获取数据

控制器要做这些事:

@Controller
public class GetUserByMyself {@Autowired@Qualifier("getUserPaginationService")private GetUserPaginationService getUserPaginationService;// 返回列表的内容@RequestMapping("getUserContentByMyself")@ResponseBodypublic Object getUserContent(HttpServletRequest request) {//获取页索引和页大小int start = Integer.parseInt(request.getParameter("start"));int len = Integer.parseInt(request.getParameter("length"));Map<String, String> params = new HashMap<String, String>();//根据页索引和页大小查询数据Map<String, Object> result = getUserPaginationService.getDetails(params, start, len);//返回数据return JSONArray.toJSON(result);}
}

DAO的实现方法:

public class GetUserPaginationDAO extends SqlSessionDaoSupport {// 获取分页的总数public Integer getUserSize(Map<String, String> params) {String statementCount = "cn.dectfix.dto.UserMapper.getUserSize";Integer totalSize = this.getSqlSession().selectOne(statementCount,params);if (totalSize != null)return totalSize;return 0;}// 获取分页的内容public Map<String, Object> getUserContent(Integer totalSize,Map<String, String> params,Integer skipResults, Integer rows) {Map<String, Object> resMap = new HashMap<String, Object>();String statementDetail = "cn.dectfix.dto.UserMapper.getUserContent";//装入要返回前台datatables的参数resMap.put("data",this.getSqlSession().selectList(statementDetail, params, new RowBounds(skipResults, rows)));resMap.put("recordsTotal", totalSize);resMap.put("recordsFiltered", totalSize);return resMap;}}

代码中通过selectList(statement,params,RowBounds)进行限定数据库查询的范围;
为了满足datatables控件的需求,需要向前台返回data、recordsFiltered、recordsTotal等参数。为什么呢?可以查看datatable实例返回ajax请求的内容格式,它也是带有这些参数的!

4.4 总结

这样就完成了基础的datatables的初始化,可能你还需要修改语言风格,搜索框的功能,或则是列排序的功能等,可以留意留意官网的做法。

这篇关于Datatable的分页入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/995382

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

MySQL入门到精通

一、创建数据库 CREATE DATABASE 数据库名称; 如果数据库存在,则会提示报错。 二、选择数据库 USE 数据库名称; 三、创建数据表 CREATE TABLE 数据表名称; 四、MySQL数据类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串类型 4.1 数值类型 数值类型 类型大小用途INT4Bytes整数值FLOAT4By

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9