简介
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

特性
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
- 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
- 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
- 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
- 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
- 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
- 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
快速开始
添加依赖
Spring Boot 2
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.12</version>
</dependency>Spring Boot 3
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.12</version>
</dependency>配置
Spring Boot 配置
在 Spring Boot 项目中,可以通过 application.yml 或 application.properties 文件来配置 MyBatis-Plus。
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.entity.pojo
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# MyBatis 配置
map-underscore-to-camel-case: true
global-config:
# 全局配置
db-config:
# 数据库配置
id-type: autoSpring MVC 配置
在传统的 Spring MVC 项目中,可以通过 XML 配置文件来配置 MyBatis-Plus。
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:mapper/**/*.xml"/>
<property name="typeAliasesPackage" value="com.your.domain"/>
<!-- 其他配置 -->
</bean>configLocation
- 类型:
String - 默认值:
null
指定 MyBatis 配置文件的位置。如果有单独的 MyBatis 配置文件,应将其路径配置到 configLocation。
配置示例:
mybatis-plus:
config-location: classpath:/mybatis-config.xmlmapperLocations
- 类型:
String[] - 默认值:
["classpath*:/mapper/**/*.xml"]
指定 MyBatis Mapper 对应的 XML 文件位置。如果在 Mapper 中有自定义方法,需要配置此项。
配置示例:
mybatis-plus:
mapper-locations: classpath:/mapper/**.xmltypeAliasesPackage
- 类型:
String - 默认值:
null
指定 MyBatis 别名包扫描路径,用于给包中的类注册别名。注册后,在 Mapper 对应的 XML 文件中可以直接使用类名,无需使用全限定类名。
配置示例:
mybatis-plus:
type-aliases-package: com.your.domain实体类
@Data
@TableName("`user`")
public class User {
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String name;
private Integer age;
private String email;
@TableField(value = "nick_name")
private String nickName;
@TableField(exist = false)
private String 不存在的字段
}指定数据库表的主键字段名。如果不设置,MyBatis-Plus 将使用实体类中的字段名作为数据库表的主键字段名。
Mapper
public interface UserMapper extends BaseMapper<User> {
}实体类注解
@TableId
该注解用于标记实体类中的主键字段。如果你的主键字段名为 id,你可以省略这个注解。
@TableName("sys_user")
public class User {
@TableId(value = "uuid",type = IdType.ASSIGN_ID)
private Long id;
private String name;
private Integer age;
private String email;
private String nickName;
}value
类型: String默认值: ""
指定数据库表的主键字段名。如果不设置,MyBatis-Plus 将使用实体类中的字段名作为数据库表的主键字段名。
type
类型: Enum默认值: IdType.NONE
指定主键的生成策略。
IdType 枚举类型定义
IdType.AUTO:使用数据库自增 ID 作为主键。IdType.NONE:无特定生成策略,如果全局配置中有 IdType 相关的配置,则会跟随全局配置。IdType.INPUT:在插入数据前,由用户自行设置主键值。IdType.ASSIGN_ID:自动分配ID,适用于Long、Integer、String类型的主键。默认使用雪花算法通过IdentifierGenerator的nextId实现。@since 3.3.0IdType.ASSIGN_UUID:自动分配UUID,适用于String类型的主键。默认实现为IdentifierGenerator的nextUUID方法。@since 3.3.0
注意
请注意,已弃用的ID类型(如 ID_WORKER, UUID, ID_WORKER_STR)应避免使用,并使用 ASSIGN_ID 或 ASSIGN_UUID 代替。这些新的策略提供了更好的灵活性和兼容性。
@TableField
该注解用于标记实体类中的非主键字段,它告诉 MyBatis-Plus 如何映射实体类字段到数据库表字段。如果你的实体类字段名遵循驼峰命名规则,并且与数据库表字段名一致,你可以省略这个注解。
@TableName("sys_user")
public class User {
@TableId
private Long id;
@TableField("nickname") // 映射到数据库字段 "nickname"
private String name;
private Integer age;
private String email;
@TableField(exist = false)
private String 不存在的字段
}value
类型: String默认值: ""
指定数据库中的字段名。如果你的实体类字段名与数据库字段名不同,使用这个属性来指定正确的数据库字段名。
exist
类型: boolean默认值: true
指示这个字段是否存在于数据库表中。如果设置为 false,MyBatis-Plus 在生成 SQL 时会忽略这个字段。
更多
MyBatis-Plus 提供了丰富的配置选项,以满足不同用户的需求。这些配置中,一部分继承自 MyBatis 原生支持的配置,另一部分则是 MyBatis-Plus 特有的扩展配置。
条件构造器查询MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
