mybatis pagehelper实现分页
jar包的版本一定要对应,不然会出现一系列的问题
下载jar包
<properties>
<!-- spring版本号 -->
<spring.version>4.0.2.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.3.0</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<!-- 分页插件 -->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
<version>1.2.17</version>
</dependency>
========================================================
配置分页过滤器
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 配置管理器 -->
<configuration>
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 4.0.0以后版本可以不设置该参数 -->
<property name="dialect" value="mysql"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样-->
<property name="offsetAsPageNum" value="true"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="true"/>
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
<property name="params" value="pageNum=start;pageSize=limit;"/>
<!-- 支持通过Mapper接口参数来传递分页参数 -->
<property name="supportMethodsArguments" value="true"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="check"/>
</plugin>
</plugins>
</configuration>
=================================================================
将SqlMapConfig.xml分页过滤器配置在sqlSessionFactory模板中
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/cjt/mapping/*.xml"></property>
<property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
</bean>
=================================================================
list列表查询此处省略(常用的查询list方式)
=================================================================
controller中的代码如下:
@SuppressWarnings("unchecked")
@RequestMapping(value="/queryProxy", method = {RequestMethod.POST,RequestMethod.GET })
public ModelAndView queryAllProxy(Model m,ProxyBusiness proxyBusiness,HttpServletRequest request,HttpServletResponse response){
String pageNum = request.getParameter("pageNum");
String pageSize =request.getParameter("pageSize");
int num = 1;
int size = 10;
if (pageNum != null && !"".equals(pageNum)) {
num = Integer.parseInt(pageNum);
}
if (pageSize != null && !"".equals(pageSize)) {
size = Integer.parseInt(pageSize);
}
PageHelper.startPage(num, size);
List<ProxyBusiness> ProxyBusinessList = proxyBusinessService.queryAllproxy(proxyBusiness);//list方法调用
PageInfo<ProxyBusiness> pagehelper = new PageInfo<ProxyBusiness>(ProxyBusinessList);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pagehelper", pagehelper);
modelAndView.setViewName("backend/proxyBusinessList");
return modelAndView;
}
使用modelAndView返回页面
========================================================================
展示信息的jsp页面:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="<%=basePath%>css/page.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<%=basePath%>js/jquery-3.1.1.min.js"></script>
<title>代理商列表</title>
<script type="text/javascript">
$(document).ready(function() {
});
function queryAllPerson(pageNum, pageSize) {
$("#edit_area_div").load("<%=basePath%>backend/queryProxy?pageNum=" + pageNum + "&pageSize=" + pageSize);
}
</script>
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div id="edit_area_div">
<table class="table" id="personList_table">
<thead>
<tr>
<td>编号</td>
<td>姓名</td>
<td>公司名称</td>
<td>代理品牌</td>
<td>网点情况</td>
<td>希望代理区域</td>
<td>电话</td>
<td>邮箱</td>
<td>申请时间</td>
<td>代理商加盟信息</td>
</tr>
</thead>
<tbody>
<c:forEach items="${pagehelper.list}" var="proxyBusiness" varStatus="i">
<tr>
<td>${i.count}</td>
<td>${proxyBusiness.proxyName}</td>
<td>${proxyBusiness.companyName}</td>
<td>${proxyBusiness.proxyBrand}</td>
<td>${proxyBusiness.netInfo}</td>
<td>${proxyBusiness.proxyArea}</td>
<td>${proxyBusiness.cellPhone}</td>
<td>${proxyBusiness.proxyEmail}</td>
<td>${proxyBusiness.createTime}</td>
<td>${proxyBusiness.proxyJoinInfo}</td>
<%-- <td><input type="text" id="id_${proxyBusiness.id }" name="id"
value="${proxyBusiness.id }" disabled /></td>
<td><input type="text" id="name_${proxyBusiness.id }" name="name"
value="${proxyBusiness.name }" disabled /></td>
<td><input type="text" id="age_${proxyBusiness.id }" name="age"
value="${proxyBusiness.age }" disabled /></td>
<td><input type="text" id="birthday_${proxyBusiness.id }"
name="birthday" class="Wdate" value="${proxyBusiness.birthdayStr}"
onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
disabled readOnly /></td>
<td>
<button id="edit_btn" οnclick="editFun('${person.id }');">编辑</button>
<button id="modify" οnclick="modifyFun('${person.id }');">修改</button>
<button id="modify" οnclick="deleteFun('${person.id }');">删除</button>
</td> --%>
</tr>
</c:forEach>
</tbody>
</table>
<div id="page_div">
<%@ include file="/WEB-INF/jsp/common/pagehelper.jsp"%> //分页的插件
</div>
</div>
</div>
</div>
</div>
</body>
</html>
======================================================================
分页的插件jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!-- -->
<!-- 页数 -->
<div class="message">
共<i class="blue">${pagehelper.total}</i>条记录,当前显示第 <i
class="blue">${pagehelper.pageNum}/${pagehelper.pages}</i> 页
</div>
<div style="text-align:center;">
<ul class="pagination">
<!-- <li><a href="#">«</a></li> -->
<c:if test="${!pagehelper.isFirstPage}">
<li><a href="javascript:queryAllPerson(${pagehelper.firstPage}, ${pagehelper.pageSize});">首页</a></li>
<li><a href="javascript:queryAllPerson(${pagehelper.prePage}, ${pagehelper.pageSize});">上一页</a></li>
</c:if>
<c:forEach items="${pagehelper.navigatepageNums}" var="navigatepageNum">
<c:if test="${navigatepageNum==pagehelper.pageNum}">
<li class="active"><a href="javascript:queryAllPerson(${navigatepageNum}, ${pagehelper.pageSize});">${navigatepageNum}</a></li>
</c:if>
<c:if test="${navigatepageNum!=pagehelper.pageNum}">
<li><a href="javascript:queryAllPerson(${navigatepageNum}, ${pagehelper.pageSize});">${navigatepageNum}</a></li>
</c:if>
</c:forEach>
<c:if test="${!pagehelper.isLastPage}">
<li><a href="javascript:queryAllPerson(${pagehelper.nextPage}, ${pagehelper.pageSize});">下一页</a></li>
<li><a href="javascript:queryAllPerson(${pagehelper.lastPage}, ${pagehelper.pageSize});">最后一页</a></li>
</c:if>
<!-- <li><a href="#">»</a></li> -->
</ul>
</div>
============================================================================
css样式:(用到的是bootstrap的样式)
/*!
* Bootstrap v3.3.5 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
==============================================================
效果:
mybatis pagehelper实现分页相关推荐
- MyBatis+PageHelper实现分页
PageHelper是一个运行在MyBatis基础之上的API库,用于简单地实现对表中数据进行分页查询. 1.数据 CREATE TABLE `student` (`id` char(36) PRIM ...
- mybatis 分页查询_MyBatis之分页查询:MyBatis PageHelper
MyBatis,作为目前流行的ORM框架,大大方便了日常开发.而对于分页查询,虽然可以通过SQL的limit语句实现,但是比较繁琐.而MyBatis PageHelper的出现,则解决了这一痛点.这里 ...
- Springboot Mybatis使用PageHelper实现分页查询
以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍. 使用pageHelper实现分页查询其实非常简单,共两步: 一.导入依赖: pom.xml添加依赖: <!-- ...
- Mybatis下collections使用pageHelper进行分页
pageHelper在对mybatis一对多分页时造成查询总页数结果不对的情况. 可以做出如下修改: service层: public CommonResult worksList(String us ...
- Springboot+Mybatis+PageHelper 分页、排序
Springboot+Mybatis+PageHelper 分页.排序 升序 asc.降序 desc <!-- 继承 spring boot 父包--><parent>< ...
- MyBatis使用PageHelper排序分页
文章目录 MyBatis使用PageHelper排序分页 前言 排序分页 使用PageHelper排序分页 添加PageHelper Spring Boot依赖 新增一个列表查询的方法 使用PageH ...
- Springboot Mybatis使用pageHelper实现分页查询
以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍. 使用pageHelper实现分页查询其实非常简单,共两步: 一.导入依赖: 二.添加配置: 那么开始, 第一步: p ...
- springboot+mybatis 利用PageHelper插件分页,结果第二页的返回分页信息还是和第一页一样。
正常使用PageHelper来分页时可以的,但是如果在查询list后做了非常多的处理,即解包在装包操作.可能最后返回时分页的数据查询的对,但是分页信息就有问题了.有的甚至分页功能都不行.这里为避免几个 ...
- springboot使用PageHelper实现分页
使用mybatis最头疼的就是写分页,需要先写一个查询count的select语句,在写一个真正的limit查询语句,所以花费很长的时间,这里咋们可以使用PageHelper实现分页. 1.首先引入p ...
最新文章
- synchronize与lock的区别
- 习题7-2 求一批整数中出现最多的个位数字 (20分)
- [html] html标签的属性值是否可以省略引号?为什么?
- 一、SMARTY安装于配置文件
- php xingnengfenxi_PHP 性能分析第三篇: 性能调优实战
- 原型化系统---失物招领APP
- 二次函数计算机课件,《二次函数的应用》课件
- java数据横转竖_关于竖表转横表的问题
- LTE学习笔记二:扁平化的组网架构
- 2017年全国大学生电子竞赛电源A题
- laravel-excel 中设置列宽,单元格内容垂直和水平都居中
- 人类dna信息量_如果有一个人的DNA序列等遗传信息数据,理论上能否克隆出这个人?需多少MB(兆字节)的信息量?...
- 微信支付(java版本)
- Dadroit JSON Viewer 查看json文件的利器
- 停车场寻车难?蓝牙5.1提供的新思路
- (简单课设)前端小白刚做的一个简单的移动端项目的分享和总结
- 【项目管理】【SVN】TortoiseSVN清理历史访问记录
- OpenCV获取网络摄像头实时视频流
- 如何写一份让 HR 眼前一亮的简历(附模板)
- 京剧《断密涧》中李密和王伯当的唱段
热门文章
- 集合框架源码分析三(实现类篇ArrayList,LinkedList,HashMap)
- 我看过且非常喜欢的《电影》和书
- firewall添加白名单_firewall的规则设置与命令(白名单设置)
- 请求成功得到返回数据还是走到catch_面试:SpringMVC在接收到请求后的调用细节是什么?...
- 服务器推送信息到客户端,服务器如何发送消息到客户端
- Hadoop详解(十):Hadoop 作业调度机制
- 现代操作系统:第二章 进程和线程
- 日志中的秘密 Windows登录类型知多少?
- Linux下查看nginx apache mysql php的编译参数
- T-SQL编程基础-基本语法