【MyBatis】MyBatis之分页
关于MyBatis的搭建可以参见“MyBatis的配置”,MyBatis是对JDBC底层代码的封装,关于Oracle、MySQL、SqlServer的分页可以查看Oracle、SqlServer、MySQL的分页。
MyBatis自带分页
关于分页,笔者首先使用MyBatis自带的分页方法:
- sqlSession.selectList("sql 的 id",sql 参数 ,RowBounds 对象
比如:
- RowBounds bound = new RowBounds(2,3);
- SqlSession session = MyBatisUtil.getSession();
- List<Dept> list = session.selectList("findAll", null, bound);
这样我们可以看到第2页的3的数据,但是这只是表面的。我们通过在MyBatis中主配置文件中开启日志输出,这样我们就可以在控制台中看到日志情况:
- <settings>
- <setting name="logImpl" value="STDOUT_LOGGING"/>
- </settings>
完整的MyBatis主配置文件如下:
- <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
- <configuration>
- <!--引入数据库信息文件-->
- <properties resource="db.properties" />
- <settings>
- <setting name="logImpl" value="STDOUT_LOGGING"/>
- </settings>
- <environments default="environment">
- <environment id="environment">
- <transactionManager type="JDBC" />
- <dataSource type="POOLED">
- <property name="driver" value="${driverClassName}" />
- <property name="url" value="${url}"/>
- <property name="username" value="${username}" />
- <property name="password" value="${password}" />
- </dataSource>
- </environment>
- </environments>
- <!-- 加载SQL定义文件 -->
- <mappers>
- <mapper resource="cn/test/sql/DeptMapper.xml" />
- </mappers>
- </configuration>
sqlmap-config.xml
下面是运行的日志截图:
看到这个日志截图,我们可以看出结果的数据是正常的,但是总共查询的数据有问题。这是使用MyBatis自带的分页的弊端。
使用pageHelper分页
使用pageHelper的插件,我们需要下载pageHelper分页工具包。需要下载 pagehelper-5.0.0.jar 和 jsqlparser-0.9.5.jar 。笔者下载的是5.0.0的pagehelper,笔者需要注意pagehelper5.0.0以上和以下的配置完全不同,pagehelper下载。
在主配置文件中添加:
- <plugins>
- <plugin interceptor="com.github.pagehelper.PageInterceptor">
- <!-- 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>
完整的主配置文件如下:
- <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
- <configuration>
- <!--引入数据库信息文件-->
- <properties resource="db.properties" />
- <settings>
- <setting name="logImpl" value="STDOUT_LOGGING"/>
- </settings>
- <plugins>
- <plugin interceptor="com.github.pagehelper.PageInterceptor">
- <!-- 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>
- <environments default="environment">
- <environment id="environment">
- <transactionManager type="JDBC" />
- <dataSource type="POOLED">
- <property name="driver" value="${driverClassName}" />
- <property name="url" value="${url}"/>
- <property name="username" value="${username}" />
- <property name="password" value="${password}" />
- </dataSource>
- </environment>
- </environments>
- <!-- 加载SQL定义文件 -->
- <mappers>
- <mapper resource="cn/test/sql/DeptMapper.xml" />
- </mappers>
- </configuration>
sqlmap-config.xml
然后通过如下的查询语句:
- SqlSession session = MyBatisUtil.getSession();
- Page<Object> page PageHelper.startPage(2, 4);
- //获得总记录数:
- //long all=page.getTotal();
- DeptMapper deptDao=session.getMapper(DeptMapper.class);
- //查询所有信息
- List<Dept> list=deptDao.findAll();
- for(Dept dept:list){
- System.out.println(dept);
- }
然后看一看日志截图:
【MyBatis】MyBatis之分页的更多相关文章
- Mybatis Generator实现分页功能
Mybatis Generator实现分页功能 分类: IBATIS2013-07-17 17:03 882人阅读 评论(1) 收藏 举报 mybatisibatisgeneratorpage分页 众 ...
- Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件
前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...
- 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 ...
随机推荐
- 如何对 GIT 分支进行规划?
项目背景: 该项目是在2011年11月份使用Asp.net三层帮荷兰某个客户开发的机票预定系统 该客户主要是做中国与欧洲的旅行社业务,特别是最近两年由于中国的发展因此客户也越来越重视机票业务 于是他们 ...
- 转: 使用MinGW + Eclipse CDT进行C++开发的配置方法
使用MinGW + Eclipse CDT进行C++开发的配置方法 1 2 3 4 5 6 分步阅读 Eclipse作为开源的IDE,可以用来高效开发Java.C++.C等程序.本文介绍如何在Wind ...
- Web.config的Release版本和Debug版本不一样的奥秘
VS编译完后,release版本的web.config(或者app.config) 为什么不一样那? 我们查看一下项目结构,会发现有两个版本的config文件存在: 打开web.Debug.con ...
- Solr搭建真实项目
在经过solr5.4.1 quick start 的学习后.我们要搭建真实的项目了 1.启动项目 bin/solr start 2.创建core bin/solr create -c pms 3.为 ...
- 【Python】torrentParser1.04 增加获得磁力链URI功能
代码: #------------------------------------------------------------------------------------ # torrentP ...
- Android 演示 Android ListView 和 github XListView(3-3)
本文内容 环境 项目结构 演示 1:简单 XListView 演示 2:XListView + Fragment 演示 3:XListView + ViewPager + Fragment 本文三个演 ...
- Java开发 - 异常 - 抛出异常
问题: 如何抛出一个系统异常并且捕获它 代码如下: public class ThrowDemo { static void demoproc() { try { throw new NullPoin ...
- Ubuntu 12.04.1 mysql从5.5升级到5.6
Ubuntu 12.04.1 mysql从5.5升级到5.6 1 2 3 4 5 apt-cache search mysql-server sudo apt-add-repository ppa: ...
- J4架构应用过程中出现的问题与解决摘录
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6369346.html sendRedirect()的页面不能用EL表达式获取参数:因为是新的request.E ...
- unique-paths I &II 路径数,动态规划
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...