mybatis PageBounds应用分页
第一步:分页工具类
package com.smartmorse.vo; import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds; public class PageForm { public static final String CHINESE_PINYIN = "nlssort(? ,'NLS_SORT=SCHINESE_PINYIN_M')"; private int page = 1;
private int limit = 20;
private String sort; private Map<String,String> orderExprs = new HashMap<String, String>(); public int getPage() {
return page;
} public void setPage(int page) {
this.page = page;
} public int getLimit() {
return limit;
} public void setLimit(int limit) {
this.limit = limit;
} public String getSort() {
return sort;
} public void setSort(String sort) {
this.sort = sort;
} public void addOrderExpr(String property, String expr){
this.orderExprs.put(property,expr);
} public PageBounds toPageBounds(){
List<Order> orders = Order.formString(sort);
for (int i = 0; i < orders.size(); i++) {
Order order = orders.get(i);
if(orderExprs.get(order.getProperty()) != null){
orders.set(i, new Order(
order.getProperty(),
order.getDirection(),
orderExprs.get(order.getProperty()))
);
}
}
return new PageBounds(page, limit, orders);
}
} 第二步 应用后端代码
@Controller
@RequestMapping("/membercheck")
public class MemberCheckController { @Autowired
MemberCheckService memberCheckService; @SystemControllerLog(description = "签到(退)列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(HttpServletRequest request, Model model, PageForm pageForm, MemberCheckVo memberCheck){
String dcode = (String) request .getSession().getAttribute("dcode");
memberCheck.setDistrictCode(dcode);
StringBuffer searchstr = new StringBuffer();//传参解决分页异常
if(StringUtil.isNotNull(memberCheck.getDistrictCode())){
searchstr.append("&districtCode="+memberCheck.getDistrictCode());
} if(StringUtil.isNotNull(memberCheck.getMemberName())){
searchstr.append("&memberName="+memberCheck.getMemberName());
} if(StringUtil.isNotNull(memberCheck.getCheckInStartDate())){
searchstr.append("&checkInStartDate="+memberCheck.getCheckInStartDate());
} if(StringUtil.isNotNull(memberCheck.getCheckInEndDate())){
searchstr.append("&checkInEndDate="+memberCheck.getCheckInEndDate());
}
if(StringUtil.isNotNull(memberCheck.getCheckOutEndDate())){
searchstr.append("&checkOutEndDate="+memberCheck.getCheckOutEndDate());
} if(StringUtil.isNotNull(memberCheck.getCheckOutStartDate())){
searchstr.append("&checkOutStartDate="+memberCheck.getCheckOutStartDate());
}
if(StringUtil.isNotNull(memberCheck.getStatus())){
searchstr.append("&status="+memberCheck.getStatus());
}
model.addAttribute("searchstr", searchstr);
model.addAttribute("memberCheck",memberCheck);
model.addAttribute("list", memberCheckService.selectByPage(memberCheck,pageForm.toPageBounds()));
return "membercheck/list";
}
} 第三步 前端应用
<%@page language="java" contentType="text/html; charset=UTF-8"%>
<%@ include file="/common/taglibs.jsp"%>
<!DOCTYPE html>
<html lang="en">
<head>
<script src="${assetsctx }/js/page/jqPaginator.min.js"
type="text/javascript"></script>
<link href="${assetsctx }/css/page/myPage.css" rel="stylesheet"
type="text/css" />
<script type="text/javascript" src="${assetsctx }js/layer/layer.js"></script>
<script type="text/javascript" src="${assetsctx }js/My97DatePicker/WdatePicker.js"></script>
</head>
<body>
<div class="row">
<div class="col-sm-12">
<div class="panel panel-default">
<!-- /.panel-heading -->
<div class="panel-heading">
<div class="col-sm-12">
<h1 class="page-header">签到(退)列表</h1>
</div>
</div>
<div class="panel-body">
<div class="text-left">
<form id="selectForm" class="form-inline" role="form" action="" method="get">
<div class="row col-sm-10">
<div class="row col-sm-12">
<div class="form-group" > <div class="form-group">
<div class="input-group">
<div class="input-group-addon">签到时间</div>
<input class="form-control" name="checkInStartDate" type="text"
placeholder="开始时间" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly="readonly"
value="${memberCheck.checkInStartDate }">
<div class="input-group-addon">至</div>
<input class="form-control" name="checkInEndDate" type="text"
placeholder="结束时间" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly="readonly"
value="${memberCheck.checkInEndDate }">
</div>
</div> <div class="form-group">
<div class="input-group">
<div class="input-group-addon">签退时间</div>
<input class="form-control" name="checkOutStartDate" type="text"
placeholder="开始时间" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly="readonly"
value="${memberCheck.checkOutStartDate }">
<div class="input-group-addon">至</div>
<input class="form-control" name="checkOutEndDate" type="text"
placeholder="结束时间" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly="readonly"
value="${memberCheck.checkOutEndDate }">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon" style="width:60px;">操作员姓名</div>
<input class="form-control" name="memberName" type="text"
placeholder=""
value="${memberCheck.memberName }">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon" style="width:60px;">状态</div>
<select name="status" class="form-control">
<option value="">全部</option>
<option value="WQD" <c:if test="${memberCheck.status=='WQD' }">selected</c:if> >未签到</option>
<option value="YQD" <c:if test="${memberCheck.status=='YQD' }">selected</c:if> >已签到</option>
<option value="YQT" <c:if test="${memberCheck.status=='YQT' }">selected</c:if> >已签退</option>
</select>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">筛选</button>
<button class="btn btn-danger" type="button" onclick="emptyForm();">重置</button>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="row col-sm-12">
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover"
id="dataTables-example">
<thead>
<tr>
<th>会员名称</th>
<th>pos编号</th>
<th>打卡日期</th>
<th>签到时间</th>
<th>签退时间</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<c:forEach var="item" items="${list}">
<tr class="id" value="${item.id }">
<td>${item.memberName }</td>
<td>${item.posNo }</td>
<td><fmt:formatDate value="${item.checkDate }" type="time" pattern="yyyy-MM-dd"/></td>
<td><fmt:formatDate value="${item.checkIn }" type="time" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td><fmt:formatDate value="${item.checkOut }" type="time" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td>
<c:if test="${item.status == 'WQD'}">未签到</c:if>
<c:if test="${item.status == 'YQD'}">已签到</c:if>
<c:if test="${item.status == 'YQT'}">已签退</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="col-sm-12 text-center">
<ul class="pagination" id="pagination"></ul>
<!-- 总条数 -->
<input type="hidden" id="PageCount" runat="server"
value="${listPaginator.totalCount}" />
<!-- 总页数 -->
<input type="hidden" id="countindex" runat="server"
value="${listPaginator.totalPages}" />
<!-- 当前第几页 -->
<input type="hidden" id="Pagedq" runat="server"
value="${listPaginator.page}" />
<!-- 请求的地址 -->
<input type="hidden" id="pageUrl" runat="server"
value="${ctx }/membercheck/list" />
<!-- 请求的参数 -->
<input type="hidden" id="pageParameter" runat="server"
value="${searchstr}" />//解决异常
<!--设置最多显示的页码数 可以手动设置 默认为7-->
<input type="hidden" id="visiblePages" runat="server" value="10" />
</div>
<script src="${assetsctx }/js/page/myPage.js"
type="text/javascript"></script>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="${assetsctx}themes/classic/base/js/app.js"></script>
<script type="text/javascript">
//清空表单
function emptyForm(){
$('input','#selectForm')
.not(':button, :submit, :reset, :hidden')
.val('');
$('option','#selectForm')
.removeAttr('selected');
}
</script>
</body>
</html> js文件
function exeData(num, type) {
loadpage();
}
function loadpage() {
var myPageCount = parseInt($("#PageCount").val());
var countindex = parseInt($("#countindex").val());
var pageUrl=$("#pageUrl").val()+"?page=";
var pageParameter=$("#pageParameter").val();
var Pagedq=$("#Pagedq").val();
$.jqPaginator('#pagination', {
totalPages: parseInt($("#countindex").val()),
visiblePages: parseInt($("#visiblePages").val()),
currentPage: parseInt($("#Pagedq").val()),
first: '<li class="first"><a href="javascript:;">首页</a></li>',
prev: '<li class="prev"><a href="javascript:;"><i class="arrow arrow2"></i>上一页</a></li>',
next: '<li class="next"><a href="javascript:;">下一页<i class="arrow arrow3"></i></a></li>',
last: '<li class="last"><a href="javascript:;">末页</a></li>',
page: '<li class="page"><a href="'+pageUrl+'{{page}}'+pageParameter+'">{{page}}</a></li>',
onPageChange: function (num, type) {
if (type == "change") {
exeData(num, type);
location.href=pageUrl+num+pageParameter;
}
}
});
$("#pagination").append("<li><span>共"+myPageCount+"条/共"+countindex+"页</span></li>");
}
$(function () {
loadpage();
});
mybatis PageBounds应用分页的更多相关文章
- Mybatis Generator实现分页功能
Mybatis Generator实现分页功能 分类: IBATIS2013-07-17 17:03 882人阅读 评论(1) 收藏 举报 mybatisibatisgeneratorpage分页 众 ...
- SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页
SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了. ...
- SpringBoot+Mybatis+PageHelper实现分页
SpringBoot+Mybatis+PageHelper实现分页 mybatis自己没有分页功能,我们可以通过PageHelper工具来实现分页,非常简单方便 第一步:添加依赖 <depend ...
- SpringBoot集成Mybatis并具有分页功能PageHelper
SpringBoot集成Mybatis并具有分页功能PageHelper 环境:IDEA编译工具 第一步:生成测试的数据库表和数据 SET FOREIGN_KEY_CHECKS=0; ...
- Mybatis的PageHelper分页插件的PageInfo的属性参数,成员变量的解释,以及页面模板
作者:个人微信公众号:程序猿的月光宝盒 //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int si ...
- 小白的springboot之路(十五)、mybatis的PageHelper分页插件使用
0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--& ...
- Mybatis: 插件及分页
Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的). Mybatis支持对Executor.StatementHa ...
- 如何用Mybatis逆向工程实现分页查询(更改生成的Example)
如何用Mybatis逆向工程实现分页查询 一个很简单的方法,如果要mysql实现分页查询的话,执行下述语句即可 select * from table limit (offset)5,(limit) ...
- mybatis是如何分页的,分页插件的原理是什么
mybatis是如何分页的,分页插件的原理是什么 代码之尖关注 12018.12.28 17:11:12字数 529阅读 19,877 1. SQL 分页 <select id="qu ...
随机推荐
- 在Windows及Linux下获取毫秒级运行时间的方法
在Windows下获取毫秒级运行时间的方法 头文件:<Windows.h> 函数原型: /*获取时钟频率,保存在结构LARGE_INTEGER中***/ WINBASEAPI BOOL W ...
- python3项目打包成exe可执行程序
使用pyinstaller将python文件打包成exe程序,打包步骤如下: 一.安装pyinstaller (1)win+R输入cmd,打开命令窗口 (2)安装pyinstaller,安装指令:pi ...
- Deepin环境下安装科学研究版Python和Pytorch--防网卡
Deepin环境下安装科学研究版Python和Pytorch--防网卡 由于本教程所引起的一切损失作者概不负责,本教程不使用pip和conda命令,因此下载好包后配合U盘可以给某个机器进行离线安装 · ...
- css控制文本对齐
h1 {text-align:center;} p.date {text-align:right;} p.main {text-align:justify;} text-decoration 属性用来 ...
- UVALive 4728 Squares(旋转卡壳)
Squares The famous Korean IT company plans to make a digital map of the Earth with help of wireless ...
- Head First Java 读书笔记(完整)
第0章:学习方法建议 该如何学习Java? 1.慢慢来.理解的越多,就越不需要死记硬背.时常停下来思考. 2.勤作笔记,勤做习题. 3.动手编写程序并执行,把代码改到出错为止. 需要哪些环境和工具? ...
- linux c 链接详解5-虚拟内存管理
5. 虚拟内存管理 我们知道操作系统利用体系结构提供的VA到PA的转换机制实现虚拟内存管理.有了共享库的基础知识之后,现在我们可以进一步理解虚拟内存管理了.首先分析一个例子: $ ps PID TTY ...
- 发布并开源自己的一款 基于.Net 4.0 及 netstandard2.0 的 ORM 框架
这款ORM框架的原版在经历过大概十几个项目的磨合,最近整理了一下,原名字为:ZhCun.Framework ,该框架辗转跟了我去过几家公司,大概从2012年出现第一个版本,当时就为简化数据库操作,从优 ...
- 转载:HTTP详解
第一部分: 1. HTTP简介 HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使 ...
- vue 改变某个页面的背景色
beforeCreate(){ // 添加背景色 document.querySelector('body').setAttribute('style', 'background-color:#fff ...