第一步:分页工具类
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应用分页的更多相关文章

  1. Mybatis Generator实现分页功能

    Mybatis Generator实现分页功能 分类: IBATIS2013-07-17 17:03 882人阅读 评论(1) 收藏 举报 mybatisibatisgeneratorpage分页 众 ...

  2. SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

    SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了. ...

  3. SpringBoot+Mybatis+PageHelper实现分页

    SpringBoot+Mybatis+PageHelper实现分页 mybatis自己没有分页功能,我们可以通过PageHelper工具来实现分页,非常简单方便 第一步:添加依赖 <depend ...

  4. SpringBoot集成Mybatis并具有分页功能PageHelper

    SpringBoot集成Mybatis并具有分页功能PageHelper   环境:IDEA编译工具   第一步:生成测试的数据库表和数据   SET FOREIGN_KEY_CHECKS=0;   ...

  5. Mybatis的PageHelper分页插件的PageInfo的属性参数,成员变量的解释,以及页面模板

    作者:个人微信公众号:程序猿的月光宝盒 //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int si ...

  6. 小白的springboot之路(十五)、mybatis的PageHelper分页插件使用

    0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--& ...

  7. Mybatis: 插件及分页

    Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的). Mybatis支持对Executor.StatementHa ...

  8. 如何用Mybatis逆向工程实现分页查询(更改生成的Example)

    如何用Mybatis逆向工程实现分页查询  一个很简单的方法,如果要mysql实现分页查询的话,执行下述语句即可 select * from table limit (offset)5,(limit) ...

  9. mybatis是如何分页的,分页插件的原理是什么

    mybatis是如何分页的,分页插件的原理是什么 代码之尖关注 12018.12.28 17:11:12字数 529阅读 19,877 1. SQL 分页 <select id="qu ...

随机推荐

  1. 二次封装dojo slider

    上次的二次封装timeslider,挺有意思,又来封装一个dojo的,样式还是用arcgis的.实现更多功能,包括HorizontalSlider和VerticalSlider, 刻度的显示隐藏,标签 ...

  2. webpack 中vue文件使用scss需要注意的地方

    需要使用npm添加node_sass和sass_loader 并且在配置文件中添加规则: { test: /\.scss$/, use: ["style-loader", &quo ...

  3. [CF895E] Eyes Closed(线段树,期望)

    Desctiption 传送门:Portal 大致题意: 给你一个序列, 支持两种操作: 1 l1 r1 l2 y2 在\([l1, r1]\)随机选择一个数a, \([l2, r2]\) 内随机选择 ...

  4. 后端数据推送-EventSource

    服务器发送事件(以下简称SSE)是HTML 5规范的一个组成部分,可以实现服务器到客户端的单向数据通信.通过SSE,客户端可以自动获取数据更新,而不用重复发送HTTP请求.一旦连接建立,“事件”便会自 ...

  5. Python运行出现:ModuleNotFoundError: No module named 'logbook',解决办法

    ModuleNotFoundError: No module named 'xlrd' ModuleNotFoundError: No module named 'xlwt' AttributeErr ...

  6. JavaScript阶乘算法

    题目: 计算所提供整数的阶乘. 如果使用字母n代表一个整数,则阶乘是所有小于或等于n的整数的乘积. 阶乘通常简写成 n! 例如: 5! = 1 * 2 * 3 * 4 * 5 = 120 使用递归实现 ...

  7. day01 python初识、数据类型、流程控制

    今日内容大纲:1,计算机基础. cpu,内存,硬盘,操作系统.2,python的发展与应用.3,python的历史. 2008年python同时更新了两个版本 1,python2x python3x ...

  8. 以python为例讲解闭包机制

    以python为例讲解闭包机制 缘起 在学习JS的过程中,总是无可避免的接触到闭包机制,尤其是接触到react后,其函数式的编程思想更是将闭包发扬光大,作为函数式编程的重要语法结构,python自然也 ...

  9. Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider

    问题现象:今天部署代码的时候发现,在beta环境可以正常部署,但是到了test环境就一直不成功,我以为是环境问题,就重新部署,但是没效,看了看日志发现问题是:Caused by: java.lang. ...

  10. 笔记70 Spring Boot快速入门(八)(重要)

    上传文件 一.方式一 1.上传页面 upLoadPage.html <!DOCTYPE html> <html lang="en"> <head> ...