Mybatis的一个插件,PageHelper,非常方便mybatis分页查询。国内牛人的一个开源项目,有兴趣的可以去看源码,都有中文注释,Github地址Mybatis-PageHelper,接下来就利用SpringBoot整合下Pagehelper分页插件,其实官方给了整合教程,有兴趣的可以去看看MyBatis-Spring-Boot,话不多说,下面开始整合,本实例Github地址06-mybatis-pagehelper:
/*
Navicat MySQL Data Transfer
Source Server : perfree-pc
Source Server Version : 50621
Source Host : localhost:3306
Source Database : springboot
Target Server Type : MYSQL
Target Server Version : 50621
File Encoding : 65001
Date: 2018-10-03 10:18:50
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(50) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '张三', '21');
INSERT INTO `user` VALUES ('2', '李四', '23');
INSERT INTO `user` VALUES ('3', '王二', '22');
INSERT INTO `user` VALUES ('4', '陈某', '25');
INSERT INTO `user` VALUES ('5', '刘某', '20');
先来个完整的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.perfree</groupId>
<artifactId>mybatis-pagehelper</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mybatis-pagehelper</name>
<description>SpringBoot-Mybatis-Pagehelper</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot-mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!--数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
关键依赖:
<!-- SpringBoot-mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!--数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
PageResult为分页查询结果集
package com.perfree.mybatispagehelper.pojo;
/**
* @ClassName User
* @Description TODO(user实体类)
* @Author Perfree
* @Date 2018/10/3 10:19
* @Version 1.0
*/
public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
package com.perfree.mybatispagehelper.controller;
import com.perfree.mybatispagehelper.common.PageResult;
import com.perfree.mybatispagehelper.pojo.User;
import com.perfree.mybatispagehelper.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @ClassName UserController
* @Description TODO(userController)
* @Author Perfree
* @Date 2018/10/3 10:20
* @Version 1.0
*/
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/users/{page}/{pageSize}")
public PageResult<User> getUserByPage(@PathVariable Integer page, @PathVariable Integer pageSize){
System.out.println(page+" "+pageSize);
PageResult<User> result = userService.getUserByPage(page,pageSize);
return result;
}
}
package com.perfree.mybatispagehelper.service;
import com.perfree.mybatispagehelper.common.PageResult;
import com.perfree.mybatispagehelper.pojo.User;
import java.util.List;
/**
* @ClassName UserService
* @Description TODO(userService 接口)
* @Author Perfree
* @Date 2018/10/3 10:20
* @Version 1.0
*/
public interface UserService {
PageResult<User> getUserByPage(Integer page, Integer pageSize);
}
package com.perfree.mybatispagehelper.common;
import java.util.List;
/**
* @ClassName PageResult
* @Description TODO(分页结果)
* @Author Perfree
* @Date 2018/10/3 10:30
* @Version 1.0
*/
public class PageResult<T> {
//共有数据条数
private Long total;
//共有页数
private Integer pageTotal;
//当前页
private Integer page;
//每页显示多杀条
private Integer pageSize;
//结果集
private List<T> list;
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public Integer getPageTotal() {
return pageTotal;
}
public void setPageTotal(Integer pageTotal) {
this.pageTotal = pageTotal;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
package com.perfree.mybatispagehelper.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.perfree.mybatispagehelper.common.PageResult;
import com.perfree.mybatispagehelper.mapper.UserMapper;
import com.perfree.mybatispagehelper.pojo.User;
import com.perfree.mybatispagehelper.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassName UserServiceImpl
* @Description TODO(UserService 实现)
* @Author Perfree
* @Date 2018/10/3 10:24
* @Version 1.0
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public PageResult<User> getUserByPage(Integer page, Integer pageSize) {
//设置起始页,每页显示的数量
PageHelper.startPage(page,pageSize);
//查询
List<User> list = userMapper.getAllUser();
//将查询的结果给pageinfo处理
PageInfo<User> pageInfo = new PageInfo<>(list);
//创建结果集对象
PageResult<User> result = new PageResult<>();
//将结果封装到结果集对象中
//当前页
result.setPage(page);
//每页的数量
result.setPageSize(pageInfo.getPageSize());
//总页数
result.setPageTotal(pageInfo.getPages());
//总条数
result.setTotal(pageInfo.getTotal());
//结果集
result.setList(pageInfo.getList());
return result;
}
}
package com.perfree.mybatispagehelper.mapper;
import com.perfree.mybatispagehelper.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @ClassName UserMapper
* @Description TODO(UserMapper 接口)
* @Author Perfree
* @Date 2018/10/3 10:24
* @Version 1.0
*/
@Mapper
public interface UserMapper {
List<User> getAllUser();
}
<?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" >
<mapper namespace="com.perfree.mybatispagehelper.mapper.UserMapper">
<select id="getAllUser" resultType="com.perfree.mybatispagehelper.pojo.User">
select id,name,age from user
</select>
</mapper>
## 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=215521
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
## Mybatis 配置
mybatis.typeAliasesPackage=com.perfree.mybatis.pojo.User
mybatis.mapperLocations=classpath:mapper/*.xml
#mapper
#mappers 多个接口时逗号隔开
mapper.mappers=com.perfree.mybatispagehelper.mapper.UserMapper
mapper.not-empty=false
mapper.identity=MYSQL
#pagehelper
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
package com.perfree.mybatispagehelper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.perfree.mybatispagehelper.mapper.UserMapper")
@SpringBootApplication
public class MybatisPagehelperApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPagehelperApplication.class, args);
}
}
1.查询第一页,每页显示3条url: http://127.0.0.1:8080/users/1/3 结果:
{
"total":5,
"pageTotal":2,
"page":1,
"pageSize":3,
"list":[{"id":1,"name":"张三","age":21},{"id":2,"name":"李四","age":23},{"id":3,"name":"王二","age":22}]}
2.查询第一页,每页显示2条url: http://127.0.0.1:8080/users/1/2 结果:
{
"total":5,
"pageTotal":3,
"page":1,
"pageSize":2,
"list":[{"id":1,"name":"张三","age":21},{"id":2,"name":"李四","age":23}]}