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

相关文章

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.