Spring Boot 整合 MyBatis Plus:快速构建高效持久层

发布于:2025-06-19 ⋅ 阅读:(12) ⋅ 点赞:(0)

在 Java 后端开发领域,持久层框架的选择对于项目的开发效率和维护成本至关重要。MyBatis 凭借其灵活的 SQL 编写能力和高性能,一直是许多开发者的首选。然而,MyBatis 在面对大量单表 CRUD 操作时,仍然需要编写冗余的 Mapper 接口和 XML 映射文件,这在一定程度上降低了开发效率。

MyBatis-Plus(简称 MP)正是为了解决这一痛点而生。作为 MyBatis 的增强工具,它在 MyBatis 的基础上提供了大量简化开发的特性,如:

  • 无侵入: 仅仅是增强,不会对 MyBatis 造成任何改变,正常使用 MyBatis 所有的功能。
  • 启动即用: 引入依赖即可使用,无需复杂配置。
  • 强大的 CRUD 操作: 提供单表 CRUD 的强大能力,无需编写 Mapper XML,甚至无需编写 Mapper 接口方法。
  • 代码生成器: 快速生成实体、Mapper、Service、Controller 等代码。
  • 分页插件: 集成 RowBounds 或 PageHelper 的分页功能。
  • 乐观锁、逻辑删除、自动填充等: 提供常用的业务功能。

本文将详细介绍如何在 Spring Boot 项目中整合 MyBatis-Plus,并分享如何利用其特性快速构建高效、简洁的持久层。


1. 为什么选择 MyBatis-Plus?

  • 告别繁琐的 CRUD: 大部分单表操作无需手写 SQL 和 Mapper 接口方法,大大减少代码量。
  • 开发效率提升: 聚焦业务逻辑,而不是重复的持久层代码。
  • 维护成本降低: 代码量减少,逻辑更清晰,维护更方便。
  • 性能优异: 基于 MyBatis,保持了高性能的特点。
  • 功能丰富: 提供大量开箱即用的功能,如分页、乐观锁、逻辑删除、自动填充等。

2. Spring Boot 整合 MyBatis-Plus 基础

在这里插入图片描述

2.1 引入依赖

pom.xml 中添加 MyBatis-Plus Starter 和数据库驱动(以 MySQL 为例)依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version> </dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version> </dependency>

2.2 配置数据源

application.propertiesapplication.yml 中配置数据库连接信息:

# application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=your_username
spring.datasource.password=your_password

# MyBatis-Plus 配置(可选,但推荐)
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml # Mapper XML 文件路径,如果使用注解方式可省略
mybatis-plus.type-aliases-package=com.example.demo.entity # 实体类包路径,方便起别名
mybatis-plus.global-config.db-config.id-type=auto # ID 主键策略,AUTO, NONE, INPUT, ASSIGN_ID, ASSIGN_UUID
mybatis-plus.global-config.db-config.logic-delete-field=deleted # 逻辑删除字段名
mybatis-plus.global-config.db-config.logic-delete-value=1 # 逻辑删除值
mybatis-plus.global-config.db-config.logic-not-delete-value=0 # 逻辑未删除值

2.3 创建实体类

创建数据库表对应的实体类,并使用 Lombok(可选,但推荐)和 MyBatis-Plus 的注解。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime; // 使用 Java 8 日期时间 API

@Data // Lombok 注解,自动生成 Getter, Setter, equals, hashCode, toString
@NoArgsConstructor
@AllArgsConstructor
@TableName("user") // 映射数据库表名
public class User implements Serializable {
   

    @TableId(value = "id", type = IdType.AUTO) // 主键ID,类型为自增
    private Long id;

    private String name;

    private Integer age;

    private String email;

    @TableField("create_time") // 映射数据库字段名,如果字段名与Java驼峰命名一致可省略
    private LocalDateTime createTime;

    @TableField("update_time")
    private LocalDateTime updateTime;

    // 逻辑删除字段(如果开启了逻辑删除)
    @TableLogic
    private Integer deleted;
}

在这里插入图片描述

2.4 创建 Mapper 接口

MyBatis-Plus 的核心特性之一就是无需编写大量的基础 CRUD 方法。你只需要让你的 Mapper 接口继承 BaseMapper<T> 即可。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.

网站公告

今日签到

点亮在社区的每一天
去签到