Maven+Mybatis+Spring+SpringMVC实现分页查询
转载:http://www.cnblogs.com/zhangtan/p/5846955.html
一、项目搭建
关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建,这篇文章提供了详细的搭建过程,而且提供了源码下载,接下来的将在这个源码的基础上继续开发。所以建议各位猿友可以把猿友下载一下。
二、分页插件的介绍
博主采用的插件是PageHelper这个插件,使用起来十分方便。该插件支持以下数据库:
| 1 2 3 4 5 6 7 8 9 10 | OracleMysqlMariaDBSQLiteHsqldbPostgreSQLDB2SqlServer(2005+)InformixH2 | 
对应于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文件添加如下依赖:
| 1 2 3 4 5 6 | <!-- mybatis分页插件依赖 --><dependency>    <groupId>com.github.pagehelper</groupId>    <artifactId>pagehelper</artifactId>    <version>4.0.0</version></dependency> | 
3.2、在Mybatis配置xml中配置拦截器插件
在mybatis-config.xml文件中添加插件后的内容如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?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:
| 1 2 3 4 5 6 7 8 9 10 | <!-- 根据用户名查询 --><select id="selectUserByUserName"parameterType="java.lang.String"resultMap="BaseResultMap">    SELECT *    FROM t_user    WHERE 1= 1    <iftest="userName != null and userName !=''">        AND USER_NAME = #{userName,jdbcType=VARCHAR}    </if>    ORDER BY USER_ID</select> | 
3.4、dao添加对用方法
UserDao.java添加如下方法:
| 1 | List<User> selectUserByUserName(@Param("userName") String userName); | 
记得@Param必须有
3.5、service添加分页查询方法
UserService.java文件添加方法
| 1 | PageInfo<User> queryByPage(String userName,Integer pageNo,Integer pageSize); | 
3.6、实现类添加对应实现
UserServiceImpl.java添加实现方法
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | @OverridepublicPageInfo<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 = newPageInfo<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());    returnpage;} | 
3.7、单元测试类添加分页查询测试方法
UserServiceTest.java文件添加方法:
| 1 2 3 4 5 | @Test    publicvoidqueryByPageTest(){          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://blog.csdn.net//u013142781/article/details/50410243
Maven+Mybatis+Spring+SpringMVC实现分页查询的更多相关文章
- Maven+Mybatis+Spring+SpringMVC实现分页查询(附源代码)
		以下小宝鸽将分享一篇Mybatis分页功能的博文,以下将给出具体的步骤.跟着博主的节奏肯定能实现.另外最后还会附上整个project的源代码.假设是没有使用过maven的猿友可自行下载相关的jar包就 ... 
- Mybatis+SpringMVC实现分页查询(附源码)
		Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQ ... 
- 使用maven整合spring+springmvc+mybatis
		使用maven整合spring+springmvc+mybatis 开发环境: 1. jdk1.8 2. eclipse4.7.0 (Oxygen) 3. mysql 5.7 在pom.xml文件中, ... 
- Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 以及 IntelliJ IDEA 怎样打开依赖视图
		Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 配置原则: 利用依赖,将所需的jar包加载到project中. 先依赖主要jar包 Spring + Spring ... 
- myBatis+Spring+SpringMVC框架面试题整理
		myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章 ... 
- spring data jpa 分页查询
		https://www.cnblogs.com/hdwang/p/7843405.html spring data jpa 分页查询 法一(本地sql查询,注意表名啥的都用数据库中的名称,适用于特 ... 
- Java基础-SSM之mybatis的统计函数和分页查询
		Java基础-SSM之mybatis的统计函数和分页查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 
- IDEA中maven搭建Spring+SpringMVC+mybatis项目
		一.介绍 使用IDEA搭建maven web项目,整合框架Spring+SpringMVC+mybatis 项目结构图: 
- 使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架
		基本概念 使用SSM(Spring,SpringMVC和Mybatis) 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod ... 
随机推荐
- 转:Hive性能优化之ORC索引–Row Group Index vs Bloom Filter Index
			之前的文章<更高的压缩比,更好的性能–使用ORC文件格式优化Hive>中介绍了Hive的ORC文件格式,它不但有着很高的压缩比,节省存储和计算资源之外,还通过一个内置的轻量级索引,提升查询 ... 
- opencv:图像的腐蚀和膨胀
			1.图像的腐蚀 图像的腐蚀和膨胀都是相对于像素值高(白色方向)说的,腐蚀简单的说就是白色”被腐蚀“了,也就是像素值低(黑色方向)的变多,白色变少. 腐蚀的原理是利用一个内核对图像进行卷积(扫描),内核 ... 
- display:inline-block  和 float 水平排列区别?
			文档流(Document flow):浮动元素会脱离文档流,并使得周围元素环绕这个元素.而inline-block元素仍在文档流内.因此设置inline-block不需要清除浮动.当然,周围元素不会环 ... 
- [eShopOnContainers 学习系列] - 03 - 在远程 Ubuntu 16.04 上配置开发环境
			直接把 md 粘出来了,博客园的富文本编辑器换成 markdown,没啥效果呀 ,先凑合吧.实在不行换地方 # 在远程 Ubuntu 16.04 上配置开发环境 ## 零.因 为什么要用这么麻烦的 ... 
- String、StringBuffer、StringBuilder分析(jdk8)
			以下代码只挑选了关键方法进行分析 public final class String //String类不可继承,实现了序列化 implements java.io.Serializable, Com ... 
- Android 反编译 -smali语法
			前言 前面我们有说过android反编译的工具,如何进行反编译.反编译后可以得到jar或者得到smali文件.Android采用的是java语言 进行开发,但是Android系统有自己的虚拟机Dalv ... 
- java svnkit实现svn提交,更新等操作
			官网:https://svnkit.com/ api:https://svnkit.com/javadoc/org/tmatesoft/svn/core/io/SVNRepository.html w ... 
- C++中const指针用法汇总
			这里以int类型为例,进行说明,在C++中const是类型修饰符: int a; 定义一个普通的int类型变量a,可对此变量的值进行修改. const int a = 3;与 int const a ... 
- JS返回上一页并刷新
			window.history.go(-1);//返回上一页不刷新 window.location.href = document.referrer;//返回上一页并刷新 
- Django之mysql表单操作
			在Django之ORM模型中总结过django下mysql表的创建操作,接下来总结mysql表记录操作,包括表记录的增.删.改.查. 1. 添加表记录 class UserInfo(models.Mo ... 
