当前博客介绍的所有代码,均为design项目原代码。
design项目地址:https://github.com/wenhaoran/design
design 项目,用mybatis 来操作数据库 。页面展示 用 easyui 的datagrid 来生成 table。
先说 mybatis 的分页查询。
下面是mybatis 分页的原理。
分页拦截器,用于拦截需要进行分页查询的操作,然后对其进行分页处理。
利用拦截器实现Mybatis分页的原理:
要利用JDBC对数据库进行操作就必须要有一个对应的Statement对象,Mybatis在执行Sql语句前就会产生一个包含Sql语句的Statement对象,而且对应的Sql语句
是在Statement之前产生的,所以我们就可以在它生成Statement之前对用来生成Statement的Sql语句下手。在Mybatis中Statement语句是通过RoutingStatementHandler对象的
prepare方法生成的。所以利用拦截器实现Mybatis分页的一个思路就是拦截StatementHandler接口的prepare方法,然后在拦截器方法中把Sql语句改成对应的分页查询Sql语句,之后再调用
StatementHandler对象的prepare方法,即调用invocation.proceed()。
对于分页而言,在拦截器里面我们还需要做的一个操作就是统计满足当前条件的记录一共有多少,这是通过获取到了原始的Sql语句后,把它改为对应的统计语句再利用Mybatis封装好的参数和设
置参数的功能把Sql语句中的参数进行替换,之后再执行查询记录数的Sql语句进行总记录数的统计。
上图是,mybatis 分页插件配置。
PageInterceptor 就是,分页插件实现的具体util类。
PageInfo 类,是 分页查询,需要的参数类,其中包含 分页查询等等所必须的信息。
下图是mapper.xml 中,分页查询的方法代码:
上面提到PageInterceptor 类,会拦截所有的查询方法。在intercept 方法,第 61到 65行代码可以看出,拦截所有查询方法之后,会判断查询的 当前查询绑定的参数对象,是否是 pageInfo 。如果是,则会根据pageInfo 的 分页信息 拼接sql ,查询需要的结果。
***********************后台分页查询数据介绍end*****************************
下面说一下,easyui 前端页面分页。
其实前端easyui 的datagrid 分页就很简单了,datagrid自己就支持分页功能。
代码如下:
$(function() {
dataGrid = $('#dataGrid').datagrid({
url : '${path}/pages/dbconn/dataGrid',
striped : true,
rownumbers : true,
pagination : true,
singleSelect : true,
idField : 'id',
sortName : 'createDate',//id
sortOrder : 'desc',
fit : true,
fitColumns : true,
fix : false,
autoRowHeight : false,
//onClickCell:function(){}
pageSize : 20,
pageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],
columns: [[
{
field : 'ck', checkbox : true
},
{
width : '10%',
title : '主键',
field : 'id',
sortable : true,
align : 'center',
hidden : true
},
{
width : '10%',
title : '数据库名称',
field : 'dbname',
sortable : false,
align : 'center',
hidden : false,
} ,
{
field : 'action',
title : '操作',
width : 200,
align : 'center',
formatter : function(value, row, index) {
var str = '';
str += $.formatString('<a href="javascript:void(0)" data-row="edit_{0}" class="dbconn-easyui-linkbutton-edit" data-options="plain:true,iconCls:\'icon-dc-del\'" onclick="editFun(\'{1}\',\'{2}\');" >编辑</a>', index, row.id, index);
str += '|';
str += $.formatString('<a href="javascript:void(0)" data-row="del_{0}" class="dbconn-easyui-linkbutton-del" data-options="plain:true,iconCls:\'icon-dc-del\'" onclick="deleteFun(\'{1}\',\'{2}\');" >删除</a>', index, row.id, index);
str += '|';
str += $.formatString('<a href="javascript:void(0)" data-row="conn_{0}" class="dbconn-easyui-linkbutton-conn" data-options="plain:true,iconCls:\'icon-dc-del\'" onclick="connect(\'{1}\');" >测试连接</a>', index, row.id);
return str;
}
}
]],
onLoadSuccess:function(data){
$('.dbconn-easyui-linkbutton-edit').linkbutton({text:'更改',plain:true,iconCls:'icon-dc-edit'});
$('.dbconn-easyui-linkbutton-del').linkbutton({text:'删除',plain:true,iconCls:'icon-dc-del'});
$('.dbconn-easyui-linkbutton-conn').linkbutton({text:'测试连接',plain:true,iconCls:'icon-dc-home'});
},
toolbar : '#toolbar'
});
});
上面代码所在文件夹,如图下。
上面代码中,url : '${path}/pages/dbconn/dataGrid', 就是说,当前 table 的数据,是从/pages/dbconn/dataGrid 这个方法中获取的。这个方法的代码,如图下:
查询需要的四个参数,page ,rows ,sort ,order 。均在 .datagrid 封装方法中 。
页面展示如图下:
更改每页显示数量为300 后,在controller 中断点查看数据如图下:
that all
可能某些地方介绍的优点模糊,不算很明确。个人水平有限,请见谅,如果有啥疑问,可以 到 github 下载代码运行之后,照着 项目看博客文档。如果还有疑问,欢迎联系本人
QQ:1286238812
design github :https://github.com/wenhaoran/design
分享到:
相关推荐
完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...
采用SpringBoot+Shiro+MyBatis+EasyUI实现的一个进销存管理系统,适合web全栈学习,毕业设计,课设 项目经过严格测试,确保可以运行! # 企业级进销存管理系统 进销存管理系统,采用SpringBoot+Shiro+MyBatis+...
总的来说,"struts2+spring+mybatis+easyui"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...
毕设项目:基于SpringBoot+MyBatis+mysql的飞机订票系统 毕设项目:基于SpringBoot+MyBatis+mysql的飞机订票系统 毕设项目:基于SpringBoot+MyBatis+mysql的飞机订票系统 毕设项目:基于SpringBoot+MyBatis+mysql的...
请自行修改config.properties文件和create table user{ id name password} url:http://localhost:8080/myweb/userController/layout.do
毕设项目:基于SpringBoot+Mybatis+Vue实现的一个在线选课系统 毕设项目:基于SpringBoot+Mybatis+Vue实现的一个在线选课系统 毕设项目:基于SpringBoot+Mybatis+Vue实现的一个在线选课系统 毕设项目:基于...
本项目是基于SpringMVC、MyBatis和EasyUI这三大框架实现的后台分页功能,旨在提供一个高效、易用的解决方案。下面将详细介绍这三个技术以及它们如何协同工作来实现前端页面的分页。 首先,SpringMVC是Spring框架的...
《构建基于Spring MVC+MyBatis+EasyUI+UEditor+Shiro的权限管理框架系统》 在现代企业级Web应用开发中,高效、安全、易维护的框架选择至关重要。本项目采用Spring MVC、MyBatis、EasyUI、UEditor以及Shiro这五大...
"springboot+mybatis+easyui增删改查分页Demo"是一个基于Spring Boot、MyBatis和EasyUI实现的Web应用程序示例,主要用于演示如何在这些技术栈中进行基本的数据操作,如添加(Add)、删除(Delete)、修改(Update)...
Struts+Spring+Mybatis+EasyUI(jQuery)注解案例。采用注解的方式跟踪代码依赖性,实现替代配置文件功能。里面包含了平时用的增删改查及分页,分页查询时用的是存储过程,提高了数据库的性能。代码简单、易懂。
毕设项目:后端springboot + mybatis + jpa,前端vue实现的简易网盘系统.zip毕设项目:后端springboot + mybatis + jpa,前端vue实现的简易网盘系统.zip毕设项目:后端springboot + mybatis + jpa,前端vue实现的...
在本项目"SpringMVC+MyBatis+EasyUI简单分页Demo"中,我们将探讨如何结合这三种技术实现一个具备基本分页功能的Web应用。SpringMVC是Spring框架的一部分,负责处理HTTP请求和响应;MyBatis是一个轻量级的持久层框架...
【标题】"SpringMVC+MyBatis+EasyUI Demo" 在现代Web开发中,集成框架的使用大大简化了开发过程,提高了效率。本项目基于SpringMVC、MyBatis和EasyUI,构建了一个功能丰富的演示系统。这些技术都是Java生态中的热门...
【项目介绍】:进销存管理系统,采用SpringBoot+Shiro+MyBatis+EasyUI 项目采用Maven构建,数据库文件存放在 sql/jxc.sql 运行项目部分截图, 登录界面,用户名admin,密码admin123 当前库存查询, 进货...
"SpringMvc + Spring + MyBatis + EasyUI"的组合是经典的Java Web开发架构,它提供了完整的功能支持,包括控制层、业务层、持久层以及前端展示。下面我们将详细探讨这些组件的核心知识点: 1. **Spring MVC**:...
基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+...
【Maven+SpringMVC+MyBatis+EasyUI+MySQL DEMO】是一个典型的Java Web项目集成示例,它展示了如何将这些流行的技术框架整合在一起,以构建一个功能丰富的Web应用。下面将详细介绍这些技术及其在项目中的作用。 1. ...
基于spring+springMVC+mybatis+easyui技术实现的医药后台管理系统 项目描述 基于spring+springMVC+mybatis+easyui技术实现的医药管理系统 运行环境 jdk7+tomcat7+mysql+eclipse/IntelliJ IDEA+maven 项目技术...
基于Spring+SpringMVC+Mybatis+easyUI实现的后台管理系统,可用作管理系统开发模板 项目经过严格测试,确保可以运行! 功能简介 本项目实现了一个简单的后台管理系统,可以作为ssm项目学习的脚手架,主要包含以下...