以下小宝鸽将分享一篇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. eclipse下tomcat临时目录位置

    eclipse 开发web程序,启动tomcat服务器的时候.临时目录在你的工作区间workspace\.metadata\.plugins\org.eclipse.wst.server.core\t ...

  2. HDU_1237_简单计算器

    运算符为+,-,*,/:操作数为整数:且没有括号 设定符号优先级,先在栈底压运算符0 #include<iostream> #include<cstdio> #include& ...

  3. CREATE FUNCTION - 定义一个新函数

    SYNOPSIS CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype { LANGUAGE lang ...

  4. Python之__class__.__module__,__class__.__name__

  5. viewer && ImageFlow 图片滚动组件 图片点击放大 可以滚轮放大缩小 viewer

    ImageFlow https://finnrudolph.com/products/imageflow https://github.com/countzero/ImageFlow http://w ...

  6. Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句

    我用的数据库是MySQL,实体类叫User public class User { private Integer uid; private String username; private Stri ...

  7. 第3节 hive高级用法:14、hive的数据压缩

    六.hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的 ...

  8. pycharm debug后会出现 step over /step into/step into my code /force step into /step out 分别表示

    1.debug,全部打印 2.打断点debug,出现单步调试等按钮,只运行断点前 3.setup over 调试一行代码 4.setup out 运行断点后面所有代码 5.debug窗口显示调试按钮 ...

  9. BZOJ 4823 Luogu P3756 老C的方块 染色+最小割

    题面太长了请各位自行品尝—>老C的方块 分析: 我们要解决掉所有使人弃疗的组合,还要保证花费最小,容易想到最小割(当然你要是想费用流的话,我们就没办法定义流量了) 我们来分析一下那些令人弃疗的组 ...

  10. idea cannot download sources解决办法

    当我们点击Download Sources时: 有时候idea会出现cannot download sources的情况,如下图 解决办法如下:打开idea右下角的terminal 在里面输入 mvn ...