详解 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.propertiesapplication.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.propertiesapplication.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 文件

  1. 创建 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();
}
  1. 创建对应的 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);
    }
}

代码解释

  1. 添加依赖
    • 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 是用于测试的依赖。
  2. 配置数据源
    • 配置数据库的连接信息,包括 urlusernamepassworddriver-class-name
  3. 配置 MyBatis 和 PageHelper
    • mybatis.mapper-locations 配置 Mapper XML 文件的位置。
    • mybatis.type-aliases-package 配置实体类的包名。
    • pagehelper.helperDialect 配置数据库方言,这里使用的是 MySQL。
    • pagehelper.reasonable 开启合理化分页,当 pageNum 小于 1 时,自动查询第一页,当 pageNum 大于总页数时,自动查询最后一页。
    • pagehelper.supportMethodsArguments 支持通过方法参数进行分页。
    • pagehelper.params 配置参数名称,用于传递分页参数。
  4. Mapper 接口和 XML 文件
    • UserMapper 接口使用 @Mapper 注解将其注册为 MyBatis 的 Mapper。
    • @Select 注解用于直接在接口中写 SQL 语句。
    • UserMapper.xml 是对应的 SQL 映射文件,可添加更多复杂的 SQL 操作。
  5. 使用 PageHelper 进行分页
    • UserService 中使用 PageHelper.startPage(pageNum, pageSize) 开启分页。
    • 调用 userMapper.findAll() 获取分页数据。
    • 使用 PageInfo 封装分页结果,包含分页信息和数据列表。
  6. Controller 层
    • UserController 中接收 pageNumpageSize 参数,调用 UserService 进行分页查询,并将结果返回。

这样,你就完成了在 Spring Boot 2.7.18 中集成 MyBatis PageHelper 的操作,可以实现分页查询功能。

注意事项

  • 确保 mapper/*.xml 路径和 com.example.demo.entity 包名根据实际情况修改。
  • 不同的数据库方言可能需要修改 pagehelper.helperDialect 的配置。
posted @ 2024-12-27 16:58  软件职业规划  阅读(5)  评论(0编辑  收藏  举报