myBatis分页插件pageHelper

myBatis分页插件pageHelper喜欢有帮助记得点赞哦,加关注不迷路分页查询是开发项目时必不可少的,这里给大家介绍一个myBatis中的分页插件pageHelper,可以很方便快速的实现分页查询,我们这里的案例还是上篇博客说到的商品查询,话不多说我们开始。1、项目架构开发工具:eclipse使用技术:Spring,SpringMVC,myBatis,mysql,maven开发环境:需要JDK,maven,mys…

喜欢有帮助记得点赞哦,加关注不迷路

分页查询是开发项目时必不可少的,这里给大家介绍一个myBatis中的分页插件pageHelper,可以很方便快速的实现分页查询,我们这里的案例还是上篇博客说到的商品查询,话不多说我们开始。

1、项目架构

开发工具:eclipse

使用技术:Spring,SpringMVC,myBatis,mysql,maven

开发环境:需要JDK,maven,mysql数据库

2、实现思路

2.1 创建数据表

2.2 项目创建

2.3 配置pom.xml文件

2.4 整合ssm框架

2.5 完成商品列表页

2.6 分别完成web层,service层和dao层

2.7 测试

接下来我们分别演示

3、具体实现

3.1 创建数据表

CREATE TABLE `goods` (
  `goods_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',
  `goods_name` varchar(255) DEFAULT NULL COMMENT '商品名称',
  `goods_type` varchar(255) DEFAULT NULL COMMENT '商品分类',
  `goods_price` double(255,0) DEFAULT NULL COMMENT '商品单价',
  `goods_count` int(11) DEFAULT NULL COMMENT '商品数量',
  PRIMARY KEY (`goods_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.2 创建项目

右击eclipse项目列表空白处选择Maven Project,点击next

myBatis分页插件pageHelper

选择web-app,点击next

myBatis分页插件pageHelper

填写组织名和模块名

myBatis分页插件pageHelper

项目搭建出来有报错,提示没有找到HttpServlet

myBatis分页插件pageHelper

因为jsp的本质就是一个Servlet,我们需要导入Servlet的jar包,而tomcat中就有这个jar,我们将tomcat引入即可,右击项目Build Path——》Configure Build Path

myBatis分页插件pageHelper

选择add Library—》Server Runtime—》选择tomcat—》finish—-》apply and close,应用并关闭,发现项目已经不报错

myBatis分页插件pageHelper

还会发现项目使用的jdk版本为1.5,这是maven项目内置的版本,我们修改为自己的JDK版本,这里我使用的是1.8

选择默认的选中的就是环境变量中配置的JDK,点击完成,应用关闭即可

myBatis分页插件pageHelper

还有我们的web.xml文件比较奇怪,也需要修改

myBatis分页插件pageHelper

将内容改为,就是之前web项目的配置文件粘贴过来就行

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	
	
</web-app>

至此我们的项目搭建完成,项目结构如下

myBatis分页插件pageHelper

3.3 配置pom文件

<!-- 定义版本 -->
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<spring.version>5.1.2.RELEASE</spring.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- JSTL标签类 -->
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!--mysql数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
		<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
		<!--log4j日志包 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.6.1</version>
		</dependency>
		<!-- mybatis ORM框架 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
		<!--mybatis-spring适配器 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.1</version>
		</dependency>
		<!--Spring框架核心库 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- aspectJ AOP 织入器 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.9</version>
		</dependency>
		<!--Spring java数据库访问包,在本例中主要用于提供数据源 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!-- pagehelper -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>4.1.6</version>

		</dependency>
	</dependencies>

3.4 整合ssm框架

注意:maven项目的配置都在resources下,分别为:

spring-mvc.xml:SpringMVC 的配置文件

spring-mybatis.xml:Spring与myBatis的整合文件

db.properties:数据库配置文件

log4j.properties:日志配置文件

3.4.1 spring-mvc.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">


	<context:component-scan base-package="com.zhiyou100" />

	<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

3.4.2 spring-mybatis.xml配置文件

注意:这里与之前ssm整合时的不同在于SqlSessionFactoryBean中还需要引入pageHelper插件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context.xsd">


	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:db.properties" />
	</bean>
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${driver}" />
		<property name="url" value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
		<!-- 初始化连接大小 -->
		<property name="initialSize" value="${initialSize}"></property>
		<!-- 连接池最大数量 -->
		<property name="maxActive" value="${maxActive}"></property>
		<!-- 连接池最大空闲 -->
		<property name="maxIdle" value="${maxIdle}"></property>
		<!-- 连接池最小空闲 -->
		<property name="minIdle" value="${minIdle}"></property>
		<!-- 获取连接最大等待时间 -->
		<property name="maxWait" value="${maxWait}"></property>
	</bean>

	<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 自动扫描mapping.xml文件 -->
		<property name="mapperLocations"
			value="classpath:com/zhiyou100/mapping/*.xml"></property>
		<!-- 配置分页插件 -->
		<property name="plugins">
			<array>
				<bean class="com.github.pagehelper.PageHelper">
					<property name="properties">
						<value>
							dialect=mysql
							reasonable=true
						</value>
					</property>
				</bean>
			</array>
		</property>
	</bean>
	<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.zhiyou100.dao" />
	</bean>
	<!-- 事务管理-->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
</beans>

3.4.3 db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///day11_02
username=root
password=root
initialSize=5
maxActive=20
maxIdle=20
minIdle=1
maxWait=60000

3.4.4 log4j.properties文件

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=DEBUG, stdout

3.4.4 web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 配置 DispatcherServlet 的一个初始化参数:配置 SpringMVC 配置文件的位置和名称 -->
		<!-- 默认的配置文件格式:/WEB-INF/<servlet-name>-servlet.xml -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-mybatis.xml</param-value>
	</context-param>
</web-app>

3.5 显示页面(show.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>商品列表</title>
</head>
<body>

	<div align="center">
		<table border="1" cellspacing="0">
			<caption>商品列表</caption>
			<tbody>
				<tr>
					<td>商品编号</td>
					<td>商品名称</td>
					<td>商品类型</td>
					<td>商品价格</td>
					<td>剩余数量</td>
				</tr>
				<c:forEach items="${goods }" var="good">
					<tr>
						<td>${good.goods_id }</td>
						<td>${good.goods_name }</td>
						<td>${good.goods_type }</td>
						<td>${good.goods_price }</td>
						<td>${good.goods_count }</td>
					</tr>
				</c:forEach>
			</tbody>
		</table>

		<p>一共${page.pages}页</p>
		<a href="goods.do?page=${page.firstPage}">第一页</a> <a
			href="goods.do?page=${page.nextPage}">下一页</a> <a
			href="goods.do?page=${page.prePage}">上一页</a> <a
			href="goods.do?page=${page.lastPage}">最后页</a>
	</div>
</body>
</html>

3.6 Controller类

@Controller
public class GoodsController {

	@Resource(name="goodsService")
	private IGoodsService goodsService;
	
	@RequestMapping("goods.do")
	  public String userList(@RequestParam(required=true,defaultValue="1") Integer page,
			  HttpServletRequest request){
	      //PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,
		 //page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
	      PageHelper.startPage(page, 3);
	      //查询
	      List<Goods> goods = goodsService.queryAll();
	      //创建PageInfo对象,保存查询出的结果,PageInfo是pageHelper中的对象
	      PageInfo<Goods> p=new PageInfo<Goods>(goods);
	      //将数据存放到request域中
	      request.setAttribute("page", p);
	      request.setAttribute("goods",goods);
	      //返回页面
	      return "show";
	  }
}

3.7 Service层

3.7.1 接口

public interface IGoodsService {

	List<Goods> queryAll();//查询所有
	
}

3.7.2 实现类

@Service("goodsService")
public class GoodsService implements IGoodsService{

	@Resource
	private IGoodsDao goodsDao;

	public List<Goods> queryAll() {
		return goodsDao.queryAll();
	}
	
}

3.8 Dao层

public interface IGoodsDao {
	List<Goods> queryAll();
}

3.9 实体类映射文件

注意:该文件创建在resources目录下的com.zhiyou100.mapping目录下

myBatis分页插件pageHelper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace的值是dao层接口的全路径 -->
<mapper namespace="com.zhiyou100.dao.IGoodsDao">
	<!-- 配置实体类与数据表映射关系 
		type:实体类全路径
		id:名字
	-->
	<resultMap type="com.zhiyou100.entity.Goods" id="goodsMap">
		<!--
			id标签:配置唯一字段,一般是主键
				property:与实体类属性名一致
				column:与数据表字段名一致
		  -->
		<id property="goods_id" column="goods_id"/>
		<!-- result标签配置非唯一字段 -->
		<result property="goods_name" column="goods_name"/>
		<result property="goods_type" column="goods_type"/>
		<result property="goods_price" column="goods_price"/>
		<result property="goods_count" column="goods_count"/>
	</resultMap>
	<!-- 定义表中字段 -->
	<sql id="key">GOODS_ID,GOODS_NAME,GOODS_TYPE,GOODS_PRICE,GOODS_COUNT</sql>
	<!-- 查询语句,查询所有 
	resultMap:与上边的resultMap标签的id属性值一致,将查出的数据按照配置的对应关系,封装到实体类中
	-->
	<select id="queryAll" resultMap="goodsMap">
		SELECT <include refid="key"/> FROM GOODS
	</select>
</mapper>

3.8 测试运行

运行项目在浏览器上输入请求地址出现以下页面

myBatis分页插件pageHelper

至此即可使用pageHelper插件实现分页查询,不需要再写以前那么多分页代码,我们专注于业务逻辑即可。需要注意的地方是使用pageHelper需要将相关jar包导入,在sqlSessionFactoryBean中配置pageHelper插件即可

项目下载地址:https://gitee.com/stt0626/mybatis-pagehelper.git

盛年不重来,一日难再晨

今天的文章myBatis分页插件pageHelper分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/6325.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注