在Spring Boot 微服务中集成 MyBATis-Plus (MP) 与集成原生 MyBatis (MB) 在配置上的主要不同点。MyBatis-Plus 是在 MyBatis 基础上进行的增强,它兼容 MyBatis 的所有配置方式,并提供了更简洁、更强大的配置选项。
相同点:
基础数据源配置 (DataSource Configuration):
完全相同。
无论是使用原生 MB 还是 MP,在 application.yml
或 application.properties
文件中配置数据库连接信息的方式是一样的。Spring Boot 会自动配置数据源(通常是 HikariCP 连接池)。
spring: datasource: url: jdbc:mysql://localhost:3306/my_service_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver # HikariCP Pool settings (optional, Spring Boot has defaults) hikari: maximum-pool-size: 10 minimum-idle: 5 connection-timeout: 30000
Mapper 接口扫描 (Mapper Interface Scanning):
完全相同。 两者都需要使用 @MapperScan
注解来告诉 Spring Boot 在哪个包路径下查找 Mapper 接口。
import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.yourcompany.yourservice.mapper") // Specify the package containing your Mapper interfaces public class YourServiceApplication { public static void main(String[] args) { SpringApplication.run(YourServiceApplication.class, args); } }
类型别名包扫描 (Type Aliases Package Scanning):
基本相同。
两者都可以使用 mybatis.type-aliases-package
(原生 MB) 或 mybatis-plus.type-aliases-package
(MP 推荐) 属性来指定实体类所在的包,以便在 XML 中或内部使用类名的简写。MP 也兼容原生的属性。
# Using MyBatis-Plus recommended property mybatis-plus: type-aliases-package: com.yourcompany.yourservice.entity # Or using the native MyBatis property (MP is compatible) # mybatis: # type-aliases-package: com.yourcompany.yourservice.entity
支持 mybatis-config.xml
(Support for mybatis-config.xml
):
兼容性相同。 两者都支持通过 mybatis.config-location
(原生 MB) 或 mybatis-plus.config-location
(MP 推荐) 指定传统的 mybatis-config.xml
文件路径,用于进行一些 MyBatis 核心的、无法通过 properties 文件配置的设置(如自定义 TypeHandler、ObjectFactory、插件等)。但在 MP 中,由于其强大的配置能力,对 mybatis-config.xml
的依赖通常会减少。
不同点:
依赖项 (Dependencies):
原生 MB: 需要引入 mybatis-spring-boot-starter
。
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>...</version> <!-- Use compatible version --> </dependency>
MP: 需要引入 mybatis-plus-boot-starter
。注意:mybatis-plus-boot-starter
已经包含了 mybatis-spring-boot-starter
,所以不需要重复引入原生 MB 的 starter。
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId>android <version>...</version> <!-- Use compatible version, e.g., 3.5.x --> </dependency>
Mapperjavascript XML 文件位置 (Mapper XML Location):
原生 MB: 必须通过 mybatis.mapper-locations
配置项指定 Mapper XML 文件的路径,因为核心 SQL 都写在 XML 中。
mybatis: mapper-locations: classpath*:/mapper/**/*.xml
MP: 如果你还需要编写自定义的 SQL 在 XML 文件中(MP 完全支持混合使用),那么也需要配置 mybatis-plus.mapper-locations
(推荐) 或 mybatis.mapper-locations
。但如果你主要依赖 MP 提供的通用 Mapper (BaseMapper
) 和 Wrapper
条件构造器进行开发,对于基础 CRUD 和许多动态查询,你可能不需要编写任何 XML 文件,此时这个配置项就不是必需的(但通常建议配置以备不时之需或保持一致性)。
mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml # Configure if using custom XML SQL
全局配置 (Global Configuration):
原生 MB: 大部分全局配置需要在 mybatis-config.xml
中设置,或者通过有限的 mybatis.configuration.*
属性配置(如 map-underscore-to-camel-case
)。
MP: 提供了更丰富的 application.yml/properties
配置项来控制全局行为,主要通过 mybatis-plus.global-config.*
和 mybatis-plus.configuration.*
。
mybatis-plus: configuration: 编程 map-underscore-to-camel-case: true # Same as mybatis.configuration.map-underscore-to-camel-case log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # Configure logging implementation global-config: db-config: id-type: assign_id # Default primary key strategy (Snowflake) logic-delete-field: deleted # Global logic delete field name logic-delete-value: 1 # Logic deleted value logic-not-delete-value: 0 # Logic not deleted value banner: false # Disable MP banner on startup
MP 的 global-config
提供了对 ID 生成策略、逻辑删除、数据库基本配置(表名/字段名处理)、Banner 开关等 MP 特有功能的全局默认设置。
插件配置 (Plugin Configuration):
- 原生 MB: 插件(如分页插件 PageHelper)通常需要单独引入依赖,并在
mybatis-config.xml
或通过 JavaBean
的方式进行配置和注册。 - MP: 内置了许多常用插件(分页、乐观锁、多租户、防全表更新等),可以通过
application.yml/properties
的mybatis-plus.plugins.*
配置项直接启用和配置,更加方便和标准化。
mybatis-plus: plugins: # Pagination Plugin pagination: max-limit: 500 # Max items per page # Optjavascriptimistic Locker Plugin optimistic-locker: enabled: true # block Attack Plugin (Prevent full table update/delete) block-attack: enabled: true
总结:
配置项/方面 | 原生 MyBatis (MB) | MyBatis-Plus (MP) | 异同说明 |
---|---|---|---|
依赖 Starter | mybatis-spring-boot-starter | mybatis-plus-boot-starter (包含前者) | 不同: 使用不同的 Starter |
数据源配置 | spring.datasource.* | spring.datasource.* | 相同: 由 Spring Boot 统一管理 |
Mapper 接口扫描 | @MapperScan | @MapperScan | 相同: 都需要指定 Mapper 包路径 |
类型别名包 | mybatis.type-aliases-package | mybatis-plus.type-aliases-package (推荐, 兼容前者) | 基本相同: 功能一致,MP 推荐使用其命名空间 |
Mapper XML 位置 | mybatis.mapper-locations (通常必需) | mybatis-plus.m编程客栈apper-locations (推荐, 仅当使用 XML 时必需) | 异同: 属性名推荐不同,对 XML 的依赖程度 MP 更低 |
mybatis-config.xml | mybatis.config-location (较常用) | mybatis-plus.config-location (推荐, 兼容前者, 依赖度降低) | 异同: 都支持,但 MP 通过 properties 提供了更多配置项,减少了对 XML 的需要 |
全局配置 | 主要在 XML 或有限的 mybatis.configuration.* | 更丰富的 mybatis-plus.global-config.* 和 mybatis-plus.configuration.* 属性 | 不同: MP 的 Properties 配置能力更强 |
插件配置 | 通常需额外依赖 + XML/Bean 配置 | 内置常用插件,可通过 mybatis-plus.plugins.* 属性配置 | 不同: MP 极大简化了常用插件的配置 |
总的来说,在 Spring Boot 微服务中,MyBatis-Plus 通过其 Boot Starter 和丰富的配置属性,极大的简化了 MyBatis 的集成和配置工作,尤其是对于全局设置和常用插件的使用。它在保持与原生 MyBatis 兼容性的同时,提供了更符合 Spring Boot “约定优于配置” 理念的方式。
到此这篇关于Spring Boot 微服务中集成 MyBatis-Plus 与集成原生 MyBatis在配置上的不同的文章就介绍到这了,更多相关Spring Boot 集成 MyBatis-Plus 与 MyBatis内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论