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/Shanghaidriver-class-name:com.mysql.cj.jdbc.Driverusername:rootpassword:MySQL123logging:level:com.itheima:debugpattern: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:
packagecom.itheima.mp.mapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.itheima.mp.domain.po.User;publicinterfaceUserMapperextendsBaseMapper<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")publicclassUser{privateLongid;}常用属性:
value:表名schema:数据库 schemaautoResultMap:是否自动构建 ResultMapexcludeProperty:排除字段
2. @TableId
作用:指定主键字段
使用位置:实体类主键属性
@TableId(type=IdType.AUTO)privateLongid;常见主键策略:
AUTO:数据库自增INPUT:手动设置ASSIGN_ID:雪花算法生成 Long 类型主键(默认)
3. @TableField
作用:声明普通字段映射关系
常见使用场景:
- 属性名与字段名不一致
isXXX命名的布尔字段- 字段名是数据库关键字
- 实体中存在非表字段
示例:
@TableField("is_married")privateBooleanmarried;@TableField(exist=false)privateStringextraInfo;六、MyBatis-Plus 常用配置
1. 全局配置
mybatis-plus:type-aliases-package:com.itheima.mp.domain.poglobal-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:
<mappernamespace="com.itheima.mp.mapper.UserMapper"><selectid="queryById"resultType="User">SELECT * FROM user WHERE id = #{id}</select></mapper>在UserMapper接口中声明对应方法,即可与 MyBatis-Plus 自动 CRUD 方法混合使用。
八、总结
MyBatis-Plus 在不破坏 MyBatis 原有特性的前提下,提供了高效、简洁的单表操作能力,包括:
- 通用 CRUD 自动实现
- 灵活的注解配置
- 合理的默认约定
- 对 XML 与手写 SQL 的完全兼容
在实际开发中,大多数单表操作可以直接通过 MyBatis-Plus 完成,能够显著减少重复代码,提高整体开发效率。