以下小宝鸽将分享一篇Mybatis分页功能的博文,以下将给出具体的步骤。跟着博主的节奏肯定能实现。另外最后还会附上整个project的源代码。假设是没有使用过maven的猿友可自行下载相关的jar包就可以。

一、项目搭建

关于项目搭建,小宝鸽曾经写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建,这篇文章提供了具体的搭建过程,并且提供了源代码下载,接下来的将在这个源代码的基础上继续开发。所以建议各位猿友能够把猿友下载一下。

二、分页插件的介绍

博主採用的插件是PageHelper这个插件,使用起来十分方便。该插件支持以下数据库:

Oracle
Mysql
MariaDB
SQLite
Hsqldb
PostgreSQL
DB2
SqlServer(2005+)
Informix
H2

相应于github的项目地址:

https://github.com/pagehelper/Mybatis-PageHelper

关于使用建议猿友们能够具体阅读下这里的介绍:

http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown

读一遍之后可能还不能全然懂怎么使用。能够先看完博主的这篇文章。然后慢慢再消化,可是上面的那篇文章还是须要从头到尾看一遍。

三、PageHelper的使用

在”一、项目搭建“里下载好了源代码,下载的源代码导入eclipse后的结构里面。有例如以下的文件:

接下来我们并不须要新增文件,直接在这些文件上改动就好了。

3.1、引入依赖

在pom.xml文件加入例如以下依赖:

<!-- mybatis分页插件依赖 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.0</version>
</dependency>

3.2、在Mybatis配置xml中配置拦截器插件

在mybatis-config.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>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<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="false"/>
<!-- 3.5.0版本号可用 - 为了支持startPage(Object params)方法 -->
<!-- 添加了一个`params`參数来配置參数映射。用于从Map或ServletRequest中取值 -->
<!-- 能够配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下。不要随便复制该配置 -->
<property name="params" value="pageNum=start;pageSize=limit;"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="check"/>
</plugin>
</plugins>
</configuration>

3.3、mapper文件加入sql

在userMapper.xml文件中面加入sql:

<!-- 依据username查询 -->
<select id="selectUserByUserName" parameterType="java.lang.String" resultMap="BaseResultMap">
SELECT *
FROM t_user
WHERE 1 = 1
<if test="userName != null and userName !=''">
AND USER_NAME = #{userName,jdbcType=VARCHAR}
</if>
ORDER BY USER_ID
</select>

3.4、dao加入对用方法

UserDao.java加入例如以下方法:

List<User> selectUserByUserName(@Param("userName") String userName);  

记得@Param必须有

3.5、service加入分页查询方法

UserService.java文件加入方法

PageInfo<User> queryByPage(String userName,Integer pageNo,Integer pageSize);

3.6、实现类加入相应实现

UserServiceImpl.java加入实现方法

@Override
public PageInfo<User> queryByPage(String userName, Integer pageNo,Integer pageSize) {
pageNo = pageNo == null?1:pageNo;
pageSize = pageSize == null?10:pageSize;
PageHelper.startPage(pageNo, pageSize);
List<User> list = userDao.selectUserByUserName(userName);
//用PageInfo对结果进行包装
PageInfo<User> page = new PageInfo<User>(list);
//測试PageInfo所有属性
System.out.println(page.getPageNum());
System.out.println(page.getPageSize());
System.out.println(page.getStartRow());
System.out.println(page.getEndRow());
System.out.println(page.getTotal());
System.out.println(page.getPages());
System.out.println(page.getFirstPage());
System.out.println(page.getLastPage());
System.out.println(page.isHasPreviousPage());
System.out.println(page.isHasNextPage());
return page;
}

3.7、单元測试类加入分页查询測试方法

UserServiceTest.java文件加入方法:

@Test
public void queryByPageTest(){
PageInfo<User> page = userService.queryByPage(null, 1, 1);
System.out.println(page);
}

3.8、执行

在小宝鸽进行了上面的改动之后,第一执行报错了!!

。!最后是pom.xml文件凝视了以下两个包的依赖才执行成功了,凝视的依赖例如以下:

具体原因如今小宝鸽也不知道。应该是包有冲突的原因吧,假设猿友们知道原因麻烦私信我或评论解释一下。

然后执行单元測试类,结果例如以下:

3.9、补充说明

在3.8中,我凝视了那两个包依赖是web项目相关的依赖,假设仍须要进行前端开发的猿友能够引入tomcat就好了,引入结果例如以下:

引入过程:

选中项目右键–>build path。然后例如以下操作:

4、源代码下载

http://download.csdn.net/detail/u013142781/9379685

Maven+Mybatis+Spring+SpringMVC实现分页查询(附源代码)的更多相关文章

  1. Maven+Mybatis+Spring+SpringMVC实现分页查询

    转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...

  2. Mybatis+SpringMVC实现分页查询(附源码)

    Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQ ...

  3. 使用maven整合spring+springmvc+mybatis

    使用maven整合spring+springmvc+mybatis 开发环境: 1. jdk1.8 2. eclipse4.7.0 (Oxygen) 3. mysql 5.7 在pom.xml文件中, ...

  4. Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 以及 IntelliJ IDEA 怎样打开依赖视图

    Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 配置原则: 利用依赖,将所需的jar包加载到project中. 先依赖主要jar包 Spring + Spring ...

  5. myBatis+Spring+SpringMVC框架面试题整理

    myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM   版权声明:本文为博主原创文章 ...

  6. spring data jpa 分页查询

    https://www.cnblogs.com/hdwang/p/7843405.html spring data jpa 分页查询   法一(本地sql查询,注意表名啥的都用数据库中的名称,适用于特 ...

  7. Java基础-SSM之mybatis的统计函数和分页查询

    Java基础-SSM之mybatis的统计函数和分页查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  8. IDEA中maven搭建Spring+SpringMVC+mybatis项目

    一.介绍 使用IDEA搭建maven web项目,整合框架Spring+SpringMVC+mybatis 项目结构图:

  9. 使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架

    基本概念 使用SSM(Spring,SpringMVC和Mybatis) 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod  ...

随机推荐

  1. badblocks - 查询设备的坏区块

    语法(SYNPSIS) badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i input_file ] [ -o outp ...

  2. 计算机内存数据存储基本原理----寄存器和RAM的电路基础

    计算机里存储数据主要有这几个部件:CPU里的寄存器和缓存.内存(内存条)和磁盘,这里我们主要简单讲下寄存器和内存条的基础实现电路. 在前面的文章<CPU怎么计算1+1----CPU计算的电路基础 ...

  3. BZOJ 4464 旅行时的困惑 最小流

    题面: Waldives 有 N 个小岛.目前的交通系统中包含 N-1 条快艇专线,每条快艇 专线连接两个岛.这 N-1条快艇专线恰好形成了一棵树. 由于特殊的原因,所有N-1条快艇专线都是单向的.这 ...

  4. 启发式合并CSU - 1811

    F - Tree Intersection CSU - 1811 Bobo has a tree with n vertices numbered by 1,2,…,n and (n-1) edges ...

  5. sql分组和连接

    SELECT mr.member_id, mr.username, GROUP_CONCAT(DISTINCT jb.company,jb.start_time,jb.end_time)company ...

  6. php使用命名空间时自动加载机制

    命名空间主要为了解决用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突.不过并不是你定义了使用命名空间的类,就可以在任何地方随意使用了,需要在程序运行时将定义命名空间的类文 ...

  7. linux如何正确设置静态ip

    如果是新安装的CentOS7的用户,刚开始应该是没网的,ifconfig命令在CentOS7已经被淘汰了. 1.使用ip addr 即查看分配网卡情况. 2.激活网卡 [root@localhost ...

  8. buf.values()

    buf.values() 返回:{Iterator} 创建并返回一个包含 Buffer 值(字节)的迭代器.当 Buffer 使用 for..of 声明时将自动调用该函数. const buf = B ...

  9. PHP:验证手机号码合法性

    文章来源:http://www.cnblogs.com/hello-tl/p/7592333.html /** * [verifyPhone description] 效验手机号码合法性 * @par ...

  10. 2. Java中的垃圾收集 - GC参考手册

    标记-清除(Mark and Sweep)是最经典的垃圾收集算法.将理论用于生产实践时, 会有很多需要优化调整的地点, 以适应具体环境.下面通过一个简单的例子, 让我们一步步记录下来, 看看如何才能保 ...