详解 Spring Boot 2.7.18 与 MyBatis PageHelper 的整合步骤
一、添加依赖
在 pom.xml
文件中添加必要的依赖:
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- PageHelper Starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
<!-- Spring Boot Test Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
二、配置数据源
在 application.properties
或 application.yml
中配置数据源信息,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
三、配置 MyBatis 和 PageHelper
可以在 application.properties
或 application.yml
中添加 MyBatis 和 PageHelper 的配置:
# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.entity
# PageHelper 配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
四、创建 Mapper 接口和 XML 文件
- 创建 Mapper 接口,例如
UserMapper.java
:
package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> findAll();
}
- 创建对应的 XML 文件,例如
UserMapper.xml
:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//DO"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<!-- 这里可以添加更多的 SQL 映射 -->
</mapper>
五、使用 PageHelper 进行分页
在 Service 层使用 PageHelper 进行分页操作,例如 UserService.java
:
package com.example.demo.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public PageInfo<User> findAllUsers(int pageNum, int pageSize) {
// 开启分页,传入页码和每页大小
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.findAll();
// 将结果封装为 PageInfo 对象
return new PageInfo<>(userList);
}
}
六、创建 Controller 层
在 Controller 层调用 Service 层进行分页查询,例如 UserController.java
:
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public PageInfo<User> getUsers(
@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
return userService.findAllUsers(pageNum, pageSize);
}
}
代码解释:
- 添加依赖:
spring-boot-starter-web
是 Spring Boot 的 Web 开发依赖。mybatis-spring-boot-starter
是 MyBatis 集成 Spring Boot 的依赖。mysql-connector-java
是 MySQL 的数据库驱动。pagehelper-spring-boot-starter
是 PageHelper 集成 Spring Boot 的依赖。spring-boot-starter-test
是用于测试的依赖。
- 配置数据源:
- 配置数据库的连接信息,包括
url
、username
、password
和driver-class-name
。
- 配置数据库的连接信息,包括
- 配置 MyBatis 和 PageHelper:
mybatis.mapper-locations
配置 Mapper XML 文件的位置。mybatis.type-aliases-package
配置实体类的包名。pagehelper.helperDialect
配置数据库方言,这里使用的是 MySQL。pagehelper.reasonable
开启合理化分页,当pageNum
小于 1 时,自动查询第一页,当pageNum
大于总页数时,自动查询最后一页。pagehelper.supportMethodsArguments
支持通过方法参数进行分页。pagehelper.params
配置参数名称,用于传递分页参数。
- Mapper 接口和 XML 文件:
UserMapper
接口使用@Mapper
注解将其注册为 MyBatis 的 Mapper。@Select
注解用于直接在接口中写 SQL 语句。UserMapper.xml
是对应的 SQL 映射文件,可添加更多复杂的 SQL 操作。
- 使用 PageHelper 进行分页:
- 在
UserService
中使用PageHelper.startPage(pageNum, pageSize)
开启分页。 - 调用
userMapper.findAll()
获取分页数据。 - 使用
PageInfo
封装分页结果,包含分页信息和数据列表。
- 在
- Controller 层:
- 在
UserController
中接收pageNum
和pageSize
参数,调用UserService
进行分页查询,并将结果返回。
- 在
这样,你就完成了在 Spring Boot 2.7.18 中集成 MyBatis PageHelper 的操作,可以实现分页查询功能。
注意事项:
- 确保
mapper/*.xml
路径和com.example.demo.entity
包名根据实际情况修改。 - 不同的数据库方言可能需要修改
pagehelper.helperDialect
的配置。