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使用的总结类型文章,会先简单的谈一下缓存 ...
随机推荐
- 如何正确地使用Entity Framework Database First
毕设依旧在不紧不慢地以每天解决一个问题的进度进行中.今天遇到的问题就是在建立数据模型时遇到的.因为项目是基于数据库构建的,所以理所应当地采用DB First来构造实体类和DbContext类.于是想也 ...
- JS中对象与字符串的互相转换
在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: throw new SyntaxError('JSON.parse'); 查询资料,大概意思如下: JSON ...
- Java基础-String 存储机制管理
JVM运行的时候,将内存分为两个部分,一部分是堆,一部分是栈.堆中存放的是创建对象,而栈中存放的则是方法调用过程中的局部变量或引用.在设计JAVA字符串对象内存实现的时候,在堆中又开辟了一块很小的内存 ...
- C语言结构体的初始化
今天在工作时,看到了奇葩的结构体初始化方式,于是我查了一下C99标准文档和gcc的说明文档,终于搞清楚是怎么回事了. 假设有如下结构体定义: typedef struct { int a, b, c; ...
- jQuery技术交流资料
jQuery技术交流资料https://www.zybuluo.com/jikeytang/note/65371
- Hive简单优化;workflow调试
1. 定义job名字 SET mapred.job.name='customer_rfm_analysis_L1'; 这样在job任务列表里可以第一眼找到自己的任务. 2. 少用distinct, 尽 ...
- 初次使用erlang的concurrent
如果不是它骇人听闻的并行性能,几乎不会考虑去学习这么一门语言.因为它的并行,我看到的是一块用软件写出来的电路板,是的,它几乎就是把电脑变成了一个可以自由编写逻辑的芯片. 例程来自这里:http://w ...
- 也谈闭包--小白的JS进阶之路
JavaScript当然是会用的,不过没有深入系统的学习罢了.平常还是用JQuery比较多,原生的JS用到的很少. 不过前端时间学习Ruby,被动态语言的强大和魔幻给震惊了一把.了解Ruby后,我把目 ...
- Facebook内部高效工作PPT指南
Facebook内部高效工作PPT指南 Facebook 内部分享:不论你如何富有,你都赚不到更多的时间,你也回不到过去.没有那么多的假如,只有指针滴答的时光飞逝和你应该好好把握的现在,以下25张PP ...
- asp.net环境变量
// 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. System.Diagnostics.Process.G ...