SpringMVC+MyBatis+EasyUI 实现分页查询
user_list.jsp
<%@ page import="com.ssm.entity.User" %>
<%@ page pageEncoding="UTF-8" import="java.util.List" %>
<html>
<head>
<%@ include file="meta.jsp" %> <meta charset="UTF-8">
<title>用户列表</title>
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4/themes/icon.css">
<script type="text/javascript" src="jquery-easyui-1.4/jquery.min.js"></script>
<script type="text/javascript" src="jquery-easyui-1.4/jquery.easyui.min.js"></script> </head>
<body>
<table id="dataTable" style="width:400px;height:250px">
<thead>
<tr>
<th data-options="field:'id'">ID</th>
<th data-options="field:'name'">姓名</th>
<th data-options="field:'age'">年龄</th>
</tr>
</thead>
</table>
<a href="/ssm">回到首页</a>
</body>
<script>
$(document).ready(function() {
page_init();
});
function page_init() { $("#dataTable").datagrid({
url: "listUserWithPageForJson", //actionName
queryParams:{pageNumber:2,pageSize:10},//查询参数
loadMsg:"正在加载数据...",
rownumbers:true,//查询结果在表格中显示行号
fitColumns:true,//列的宽度填满表格,防止下方出现滚动条。
pageNumber:2, //初始页码,得在这设置才效果,pagination设置没效果。
pagination: true//分页控件
//如果后端返回的json的格式直接是data={total:xx,rows:{xx}},不需要设置loadFilter了,
//如果有多层封装,比如data.jsonMap = {total:xx,rows:{xx}},则需要在loadFilter处理一下。
/*
loadFilter: function(data){
if(data.jsonMap) {
return data.jsonMap;
}
}*/
}); var p = $('#dataTable').datagrid('getPager');
$(p).pagination({
pageSize: 10,//每页显示的记录条数,默认为10
pageList: [5,10,15,20],//可以设置每页记录条数的列表
beforePageText: '第',//页数文本框前显示的汉字
afterPageText: '页 共 {pages} 页',
displayMsg: '共 {total} 条记录',
onSelectPage: function (pageNumber, pageSize) {//分页触发
find(pageNumber, pageSize);
}
}); } function find(pageNumber, pageSize)
{
$("#dataTable").datagrid('getPager').pagination({pageSize : pageSize, pageNumber : pageNumber});//重置
$("#dataTable").datagrid("loading"); //加屏蔽
$.ajax({
type : "POST",
dataType : "json",
url : "listUserWithPageForJson",
data : {
pageNumber : pageNumber,
pageSize : pageSize
},
success : function(data) {
$("#dataTable").datagrid('loadData',data);
$("#dataTable").datagrid("loaded"); //移除屏蔽
},
error : function(err) {
$.messager.alert('操作提示', '获取信息失败...请联系管理员!', 'error');
$("#dataTable").datagrid("loaded"); //移除屏蔽
}
}); } </script>
</html>
UserController.java
package com.ssm.controller; import com.alibaba.fastjson.JSONObject;
import com.ssm.common.PageModel;
import com.ssm.dao.UserDao;
import com.ssm.entity.JsonEntity;
import com.ssm.entity.User;
import com.ssm.service.UserService;
import com.ssm.tools.BlankUtil;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* Created by Administrator on 2015-10-15.
*/
@Controller
public class UserController { @Resource
private UserService userService; @RequestMapping(value = "listUserWithPageForJson")
@ResponseBody
public Object listUserWithPageForJson(PageModel pageModel,User user) {
Object jsonObject = null;
try {
pageModel.setQueryObj(user);
userService.listUserWithPage(pageModel);
jsonObject = JSONObject.toJSON(pageModel);
} catch (Exception e) {
e.printStackTrace();
}
return jsonObject;
} }
PageModel.java
package com.ssm.common; import java.util.List; /**
* Created by hbd on 2015/10/22.
*/
public class PageModel<T> { private Integer pageNumber; //当前页数
private Integer pageSize; //一页显示数量
private Integer startRow; //查询起始行
private Integer total; //总记录行数
private List<T> rows; //查询结果数据
private T queryObj; //查询对象 public Integer getStartRow() {
if(pageNumber!=null && pageSize!=null) {
return (pageNumber - 1) * pageSize;
} else {
return 0;
}
} public Integer getPageNumber() {
return pageNumber;
} public void setPageNumber(Integer pageNumber) {
this.pageNumber = pageNumber;
} public Integer getPageSize() {
return pageSize;
} public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
} public Integer getTotal() {
return total;
} public void setTotal(Integer total) {
this.total = total;
} public List<T> getRows() {
return rows;
} public void setRows(List<T> rows) {
this.rows = rows;
} public void setQueryObj(T queryObj) {
this.queryObj = queryObj;
} public T getQueryObj() {
return queryObj;
}
}
UserServiceImpl.java
package com.ssm.service.impl; import com.ssm.common.PageModel;
import com.ssm.dao.UserDao;
import com.ssm.entity.User;
import com.ssm.service.UserService;
import org.springframework.stereotype.Service; import javax.annotation.Resource;
import java.util.List; /**
* Created by Administrator on 2015-10-16.
*/
@Service("userService")
public class UserServiceImpl implements UserService { @Resource
private UserDao userDao; @Override
public User getUserById(int userId) {
return userDao.findUserById(userId);
} @Override
public void listUserWithPage(PageModel<User> pageModel) {
pageModel.setRows(userDao.selectUserListWithPage(pageModel));
pageModel.setTotal(userDao.selectUserCountWithPage(pageModel));
} }
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--这块等于dao接口的实现 namespace必须和接口的类路径一样-->
<mapper namespace="com.ssm.dao.UserDao"> <sql id="sql_count">
SELECT COUNT(*)
</sql>
<sql id="sql_select">
SELECT *
</sql>
<sql id="sql_where">
FROM USER
<where>
<if test="queryObj != null">
<if test="queryObj.name != null and queryObj.name != ''">
AND name like CONCAT('%',#{queryObj.name},'%')
</if>
<if test="queryObj.age != null">
AND age = #{queryObj.age}
</if>
</if>
</where>
</sql> <select id="selectUserListWithPage" parameterType="com.ssm.common.PageModel" resultType="User">
<include refid="sql_select"></include>
<include refid="sql_where"></include>
<if test="pageNumber != null and pageSize!= null">
limit #{startRow},#{pageSize}
</if>
</select> <select id="selectUserCountWithPage" parameterType="com.ssm.common.PageModel" resultType="Integer">
<include refid="sql_count"></include>
<include refid="sql_where"></include>
</select> </mapper>
SpringMVC+MyBatis+EasyUI 实现分页查询的更多相关文章
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复
写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理
前文提要 承接前文<一次线上Mysql数据库崩溃事故的记录>,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑. 由于时间原因,其中只讲了当时的一些经 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例
日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试>讲了不为和不能两个状态,针对不为,只能自己调整心态了,而对于不能,本文会结合一 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化
本文提要 最近写的几篇文章都是关于数据层优化方面的,这几天也在想还有哪些地方可以优化改进,结合日志和项目代码发现,关于数据层的优化,还是有几个方面可以继续修改的,代码方面,整合了druid数据源也开启 ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API
写在前面的话 看了一下博客目录,距离上次更新这个系列的博文已经有两个多月,并不是因为不想继续写博客,由于中间这段时间更新了几篇其他系列的文章就暂时停止了,如今已经讲述的差不多,也就继续抽时间更新< ...
- Spring+SpringMVC+MyBatis+easyUI整合
进阶篇 Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API 优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化 ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存 ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇
基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 简介 这是一篇关于Redis使用的总结类型文章,会先简单的谈一下缓存 ...
随机推荐
- [设计模式] javascript 之 单件模式
单件模式说明 1. 说明:单件模式,就是静态化的访问中已经实例化的对象,这个对象只能通过一个唯一的入口访问,已经实例或待实例化的对象:面向对象语言如Java, .Net C#这样的服务端动态语言里,能 ...
- DOM(七)使用DOM控制表格
表格的css控制就先不说了,首先分享下表格常用的DOM 表格添加操作的方法常用的为insertRow()和insertCell()方法. row是从零开始计算起的,例如: var oTr = docu ...
- 第一章:javascript: 数据结构与算法
在前端工程师中,常常有一种声音,我们为什么要学数据结构与算法,没有数据结构与算法,我们一样很好的完成工作.实际上,算法是一个宽泛的概念,我们写的任何程序都可以称为算法,甚至往冰箱里放大象,也要通过开门 ...
- 设计模式之UML类图的常见关系(一)
本篇会讲解在UML类图中,常见几种关系: 泛化(Generalization),依赖(Dependency),关联(Association),聚合(Aggregation),组合(Compositio ...
- HTML5 文件操作API
简介 我常常想,如果网络应用能够读取和写入文件与目录,将会非常方便.从离线转移到在线后,应用变得更加复杂,而文件系统方面的API的缺乏也一直阻碍着网络前进.存储二进制数据或与其进行交互不应局限于桌面. ...
- ORACLE在存储过程中记录日志的处理包
Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见. 一.表结构 为 ...
- 【BZOJ-3293&1465&1045】分金币&糖果传递×2 中位数 + 乱搞
3293: [Cqoi2011]分金币 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 854 Solved: 476[Submit][Status] ...
- 洛谷P2014 TYVJ1051 选课
题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...
- Xcode7中新技术
Xcode7真加了两个重要的debug功能:1:Address Sanitizer: 再也不用担心 EXC_BAD_ACCESS 在项目的Scheme中Diagnostics下,选中enable ad ...
- JS 在线网站
JS 在线压缩网站 国内压缩js网站http://tool.css-js.com/ uglifyjs 压缩js网站http://lisperator.net/uglifyjs JS在线格式化网站 ht ...