Maven+Mybatis+Spring+SpringMVC实现分页查询(附源代码)
以下小宝鸽将分享一篇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、源代码下载
Maven+Mybatis+Spring+SpringMVC实现分页查询(附源代码)的更多相关文章
- Maven+Mybatis+Spring+SpringMVC实现分页查询
转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...
- 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 ...
随机推荐
- vsphere中的vcenter创建esxi模板虚拟机新建无法连接网络
1.删除网卡配置文件下的uuid和hwaddr 这是因为虚拟机模板创建网卡mac没改变 2.删除规则文件 rm -f /etc/udev/rules.d/-prtsistent-net.rules ...
- 对比props
1.在组件中data返回数组对象 2.在父级作用域中写入 (1)prop传值 <btn-grp :buttons="buttons"></btn-grp> ...
- 路径工具类NSPathUtilities
路径工具类NSPathUtilities.h 路径类NSPathUtilities.h包含了 NSString的函数和分类扩展,他允许你操作路径名.应该竟可能的使用这些函数,以便使程序更独立于文件系统 ...
- 全国绿色计算大赛 模拟赛第二阶段 (Python)
第1关气温预测 def dailyTemps(temp_list): result = [] for ca in range(0, len(temp_list)-1): for i in range( ...
- [模板] Splay
欠了好久的Splay,以后就它了. 默写真不容易,过几天估计就忘了.. 整个Splay真的精妙,不拖泥带水那种.. 前驱后继之所以不能用rk转到根,是因为这个数不一定存在.. kth中<=老忘记 ...
- JAVA加载Properties配置资源文件
JAVA加载Properties配置资源文件 制作人:全心全意 配置文件(资源文件):以properties作为拓展名的文件 Java代码是如何加载properties文件的? 必须使用Propert ...
- 牛客网补题 New Game!(原Wannafly summer camp day2原题)
思路:这个题在秦皇岛的时候好像没有写出来,反正我是没有写出来,题解是听懂了:把直线和圆都看做一个结点,圆和直线用点到直线的距离与半径差求出来,圆和圆之间用点和点之间的距离和半径差表示,最后最短路跑一遍 ...
- url方法使用与单例模式
一.url方法使用 from django.contrib import admin from django.urls import path, include from django.conf.ur ...
- Python基础之列表、元组、字典、集合的使用
一.列表 1.列表定义 names=["Jhon","Lucy","Michel","Tom","Wiliam ...
- java连接mysql数据库中文乱码问题
private static final String URL="jdbc:mysql://localhost:3306/ziye?useUnicode=true&character ...