MyBatis-Plus 快速入门与核心用法总结

📚 目录(点击跳转对应章节)

一、前言
二、环境准备
三、MyBatis-Plus 快速开始
四、MyBatis-Plus 核心原理
五、常用注解详解
六、MyBatis-Plus 常用配置
七、手写 SQL 支持
八、总结


一、前言

在日常开发中,单表 CRUD 是最常见、也是最重复的工作。

MyBatis 虽然灵活,但通常需要编写大量 Mapper XML 或注解 SQL,开发效率较低。

MyBatis-Plus(简称 MP)是在 MyBatis 基础上的增强框架,提供了通用 CRUD 能力,在不影响原有功能的前提下,大幅减少样板代码,提高开发效率。

本文将从以下几个方面对 MyBatis-Plus 的核心用法进行总结:

  • 环境准备
  • 快速入门
  • 核心原理
  • 常用注解
  • 常用配置
  • 手写 SQL 支持

二、环境准备

数据源配置

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

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: MySQL123

logging:
  level:
    com.itheima: debug
  pattern:
    dateformat: HH:mm:ss

三、MyBatis-Plus 快速开始

1. 引入依赖

MyBatis-Plus 提供了官方 Starter,已集成 MyBatis 自动装配功能,可直接替换 MyBatis Starter。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

完整依赖示例如下:

<dependencies>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3.1</version>
    </dependency>

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 定义 Mapper

MyBatis-Plus 提供了通用接口 BaseMapper<T>,内置了常见的单表 CRUD 方法。

自定义 Mapper 只需继承 BaseMapper

package com.itheima.mp.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.mp.domain.po.User;

public interface UserMapper extends BaseMapper<User> {
}

无需编写 XML 或 SQL,即可直接使用通用 CRUD 方法。


3. CRUD 操作说明

MyBatis-Plus 提供的常用 CRUD 方法包括:

  • insert:插入数据
  • selectById:根据 ID 查询
  • selectBatchIds:批量查询
  • updateById:根据 ID 更新
  • deleteById:根据 ID 删除

上述方法均由 MyBatis-Plus 自动实现,可直接调用,显著减少 XML 编写。


四、MyBatis-Plus 核心原理

MyBatis-Plus 通过实体类(PO)推断数据库表结构,默认遵循以下约定:

  • 实体类名(驼峰)映射为表名(下划线)
  • 实体属性名(驼峰)映射为字段名(下划线)
  • 名为 id 的属性默认作为主键

在实际项目中,若数据库设计不完全符合约定规则,可通过注解进行精确映射。


五、常用注解详解

1. @TableName

作用:指定实体类对应的数据库表名
使用位置:实体类

@TableName("user")
public class User {
    private Long id;
}

常用属性:

  • value:表名
  • schema:数据库 schema
  • autoResultMap:是否自动构建 ResultMap
  • excludeProperty:排除字段

2. @TableId

作用:指定主键字段
使用位置:实体类主键属性

@TableId(type = IdType.AUTO)
private Long id;

常见主键策略:

  • AUTO:数据库自增
  • INPUT:手动设置
  • ASSIGN_ID:雪花算法生成 Long 类型主键(默认)

3. @TableField

作用:声明普通字段映射关系

常见使用场景:

  • 属性名与字段名不一致
  • isXXX 命名的布尔字段
  • 字段名是数据库关键字
  • 实体中存在非表字段

示例:

@TableField("is_married")
private Boolean married;

@TableField(exist = false)
private String extraInfo;

六、MyBatis-Plus 常用配置

1. 全局配置

mybatis-plus:
  type-aliases-package: com.itheima.mp.domain.po
  global-config:
    db-config:
      id-type: auto

配置说明:

  • type-aliases-package:实体类别名扫描路径
  • id-type:全局主键策略

2. Mapper XML 扫描路径

MyBatis-Plus 支持手写 SQL,默认 XML 扫描路径如下:

mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml

七、手写 SQL 支持

mapper 目录下创建 UserMapper.xml

<mapper namespace="com.itheima.mp.mapper.UserMapper">
    <select id="queryById" resultType="User">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

UserMapper 接口中声明对应方法,即可与 MyBatis-Plus 自动 CRUD 方法混合使用。


八、总结

MyBatis-Plus 在不破坏 MyBatis 原有特性的前提下,提供了高效、简洁的单表操作能力,包括:

  • 通用 CRUD 自动实现
  • 灵活的注解配置
  • 合理的默认约定
  • 对 XML 与手写 SQL 的完全兼容

在实际开发中,大多数单表操作可以直接通过 MyBatis-Plus 完成,能够显著减少重复代码,提高整体开发效率。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐