Skip to content

简介

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

image-20250605132829337

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 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

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

Spring Boot 3

xml
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.12</version>
</dependency>

配置

Spring Boot 配置

在 Spring Boot 项目中,可以通过 application.ymlapplication.properties 文件来配置 MyBatis-Plus。

yaml
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: auto

Spring MVC 配置

在传统的 Spring MVC 项目中,可以通过 XML 配置文件来配置 MyBatis-Plus。

xml
<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

配置示例

yaml
mybatis-plus:
  config-location: classpath:/mybatis-config.xml
mapperLocations
  • 类型String[]
  • 默认值["classpath*:/mapper/**/*.xml"]

指定 MyBatis Mapper 对应的 XML 文件位置。如果在 Mapper 中有自定义方法,需要配置此项。

配置示例

yaml
mybatis-plus:
  mapper-locations: classpath:/mapper/**.xml
typeAliasesPackage
  • 类型String
  • 默认值null

指定 MyBatis 别名包扫描路径,用于给包中的类注册别名。注册后,在 Mapper 对应的 XML 文件中可以直接使用类名,无需使用全限定类名。

配置示例

yaml
mybatis-plus:
  type-aliases-package: com.your.domain

实体类

java
@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

sql
public interface UserMapper extends BaseMapper<User> {

}

实体类注解

@TableId

该注解用于标记实体类中的主键字段。如果你的主键字段名为 id,你可以省略这个注解。

java
@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,适用于 LongIntegerString 类型的主键。默认使用雪花算法通过 IdentifierGeneratornextId 实现。@since 3.3.0
  • IdType.ASSIGN_UUID:自动分配 UUID,适用于 String 类型的主键。默认实现为 IdentifierGeneratornextUUID 方法。@since 3.3.0

注意

请注意,已弃用的ID类型(如 ID_WORKER, UUID, ID_WORKER_STR)应避免使用,并使用 ASSIGN_IDASSIGN_UUID 代替。这些新的策略提供了更好的灵活性和兼容性。

@TableField

该注解用于标记实体类中的非主键字段,它告诉 MyBatis-Plus 如何映射实体类字段到数据库表字段。如果你的实体类字段名遵循驼峰命名规则,并且与数据库表字段名一致,你可以省略这个注解。

java
@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-Plus 提供了丰富的配置选项,以满足不同用户的需求。这些配置中,一部分继承自 MyBatis 原生支持的配置,另一部分则是 MyBatis-Plus 特有的扩展配置。

使用配置 | MyBatis-Plus

条件构造器查询MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。

条件构造器 | MyBatis-Plus

如有转载或 CV 的请标注本站原文地址

访客数 --| 总访问量 --