分页查询是开发项目时必不可少的,这里给大家介绍一个myBatis中的分页插件pageHelper,可以很方便快速的实现分页查询,我们这里的案例还是上篇博客说到的商品查询,话不多说我们开始。
开发工具:eclipse
使用技术:Spring,SpringMVC,myBatis,mysql,maven
开发环境:需要JDK,maven,mysql数据库
2.1 创建数据表
2.2 项目创建
2.3 配置pom.xml文件
2.4 整合ssm框架
2.5 完成商品列表页
2.6 分别完成web层,service层和dao层
2.7 测试
接下来我们分别演示
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;
右击eclipse项目列表空白处选择Maven Project,点击next
选择web-app,点击next
填写组织名和模块名
项目搭建出来有报错,提示没有找到HttpServlet
因为jsp的本质就是一个Servlet,我们需要导入Servlet的jar包,而tomcat中就有这个jar,我们将tomcat引入即可,右击项目Build Path------》Configure Build Path
选择add Library---》Server Runtime---》选择tomcat---》finish----》apply and close,应用并关闭,发现项目已经不报错
还会发现项目使用的jdk版本为1.5,这是maven项目内置的版本,我们修改为自己的JDK版本,这里我使用的是1.8
选择默认的选中的就是环境变量中配置的JDK,点击完成,应用关闭即可
还有我们的web.xml文件比较奇怪,也需要修改
将内容改为,就是之前web项目的配置文件粘贴过来就行
至此我们的项目搭建完成,项目结构如下
UTF-8
5.1.2.RELEASE
junit
junit
3.8.1
test
jstl
jstl
1.2
mysql
mysql-connector-java
5.1.38
commons-dbcp
commons-dbcp
1.4
org.apache.logging.log4j
log4j-core
2.6.1
org.mybatis
mybatis
3.4.6
org.mybatis
mybatis-spring
1.3.1
org.springframework
spring-context
${spring.version}
org.aspectj
aspectjweaver
1.8.9
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
com.github.pagehelper
pagehelper
4.1.6
注意:maven项目的配置都在resources下,分别为:
spring-mvc.xml:SpringMVC 的配置文件
spring-mybatis.xml:Spring与myBatis的整合文件
db.properties:数据库配置文件
log4j.properties:日志配置文件
注意:这里与之前ssm整合时的不同在于SqlSessionFactoryBean中还需要引入pageHelper插件
dialect=mysql
reasonable=true
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///day11_02
username=root
password=root
initialSize=5
maxActive=20
maxIdle=20
minIdle=1
maxWait=60000
### 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
org.springframework.web.context.ContextLoaderListener
springDispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
springDispatcherServlet
*.do
contextConfigLocation
classpath:spring-mybatis.xml
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
商品列表
@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 = goodsService.queryAll();
//创建PageInfo对象,保存查询出的结果,PageInfo是pageHelper中的对象
PageInfo p=new PageInfo(goods);
//将数据存放到request域中
request.setAttribute("page", p);
request.setAttribute("goods",goods);
//返回页面
return "show";
}
}
public interface IGoodsService {
List queryAll();//查询所有
}
@Service("goodsService")
public class GoodsService implements IGoodsService{
@Resource
private IGoodsDao goodsDao;
public List queryAll() {
return goodsDao.queryAll();
}
}
public interface IGoodsDao {
List queryAll();
}
注意:该文件创建在resources目录下的com.zhiyou100.mapping目录下
GOODS_ID,GOODS_NAME,GOODS_TYPE,GOODS_PRICE,GOODS_COUNT
运行项目在浏览器上输入请求地址出现以下页面
至此即可使用pageHelper插件实现分页查询,不需要再写以前那么多分页代码,我们专注于业务逻辑即可。需要注意的地方是使用pageHelper需要将相关jar包导入,在sqlSessionFactoryBean中配置pageHelper插件即可
项目下载地址:https://gitee.com/stt0626/mybatis-pagehelper.git
盛年不重来,一日难再晨