Spring Boot 微服务中集成 MyBatis-Plus 与集成原生 MyBatis在配置上的不同

 更新时间:2025年04月17日 09:41:34   作者:冰糖心书房  
在Spring Boot微服务中,MyBatis-Plus通过其Boot Starter和丰富的配置属性,极大的简化了MyBatis的集成和配置工作,尤其是对于全局设置和常用插件的使用,本文给大家介绍Spring Boot 微服务中集成 MyBatis-Plus与集成原生 MyBatis 有哪些配置上的不同,感兴趣的朋友一起看看吧

在Spring Boot 微服务中集成 MyBatis-Plus (MP) 与集成原生 MyBatis (MB) 在配置上的主要不同点。MyBatis-Plus 是在 MyBatis 基础上进行的增强,它兼容 MyBatis 的所有配置方式,并提供了更简洁、更强大的配置选项。

相同点:

基础数据源配置 (DataSource Configuration):

完全相同。

无论是使用原生 MB 还是 MP,在 application.ymlapplication.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>
    <version>...</version> <!-- Use compatible version, e.g., 3.5.x -->
</dependency>

Mapper 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 或通过 Java Bean 的方式进行配置和注册。
  • MP: 内置了许多常用插件(分页、乐观锁、多租户、防全表更新等),可以通过 application.yml/propertiesmybatis-plus.plugins.* 配置项直接启用和配置,更加方便和标准化。
mybatis-plus:
  plugins:
    # Pagination Plugin
    pagination:
      max-limit: 500 # Max items per page
    # Optimistic Locker Plugin
    optimistic-locker:
      enabled: true
    # Block Attack Plugin (Prevent full table update/delete)
    block-attack:
      enabled: true

总结:

配置项/方面原生 MyBatis (MB)MyBatis-Plus (MP)异同说明
依赖 Startermybatis-spring-boot-startermybatis-plus-boot-starter (包含前者)不同: 使用不同的 Starter
数据源配置spring.datasource.*spring.datasource.*相同: 由 Spring Boot 统一管理
Mapper 接口扫描@MapperScan@MapperScan相同: 都需要指定 Mapper 包路径
类型别名包mybatis.type-aliases-packagemybatis-plus.type-aliases-package (推荐, 兼容前者)基本相同: 功能一致,MP 推荐使用其命名空间
Mapper XML 位置mybatis.mapper-locations (通常必需)mybatis-plus.mapper-locations (推荐, 仅当使用 XML 时必需)异同: 属性名推荐不同,对 XML 的依赖程度 MP 更低
mybatis-config.xmlmybatis.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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中JDBC实现往MySQL插入百万级数据的实例代码

    java中JDBC实现往MySQL插入百万级数据的实例代码

    这篇文章主要介绍了java中JDBC实现往MySQL插入百万级数据的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • JavaCV实现将视频以帧方式抽取

    JavaCV实现将视频以帧方式抽取

    这篇文章主要为大家详细介绍了JavaCV实现将视频以帧方式抽取,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • JAVA实战练习之图书管理系统实现流程

    JAVA实战练习之图书管理系统实现流程

    随着网络技术的高速发展,计算机应用的普及,利用计算机对图书馆的日常工作进行管理势在必行,本篇文章手把手带你用Java实现一个图书管理系统,大家可以在过程中查缺补漏,提升水平
    2021-10-10
  • Spring DI依赖注入过程解析

    Spring DI依赖注入过程解析

    依赖注入是由“依赖”和“注入”两个词汇组合而成,那么我们再一次顺藤摸瓜,分别分析这两个词语,这篇文章主要介绍了Spring DI依赖注入详解,需要的朋友可以参考下
    2022-11-11
  • 解决springboot3:mybatis-plus依赖错误:org.springframework.beans.factory.UnsatisfiedDependencyException

    解决springboot3:mybatis-plus依赖错误:org.springframework.beans.fac

    这篇文章主要介绍了解决springboot3:mybatis-plus依赖错误:org.springframework.beans.factory.UnsatisfiedDependencyException问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBoot自动配置深入探究实现原理

    SpringBoot自动配置深入探究实现原理

    在springboot的启动类中可以看到@SpringBootApplication注解,它是SpringBoot的核心注解,也是一个组合注解。其中@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解尤为重要。今天我们就来浅析这三个注解的含义
    2022-08-08
  • mybatis中关于mapper的使用以及注意事项

    mybatis中关于mapper的使用以及注意事项

    这篇文章主要介绍了mybatis中关于mapper的使用以及注意事项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 使用System.exit()来优雅地终止SpringBoot项目的代码示例

    使用System.exit()来优雅地终止SpringBoot项目的代码示例

    System.exit() 方法是 Java 中用于退出程序的方法,它接受一个整数参数,通常被用来指示程序的退出状态,本文给大家介绍了如何使用System.exit()来优雅地终止SpringBoot项目,需要的朋友可以参考下
    2024-08-08
  • Log4j关闭Spring和Hibernate日志打印方式

    Log4j关闭Spring和Hibernate日志打印方式

    这篇文章主要介绍了Log4j关闭Spring和Hibernate日志打印方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot整合Scala构建Web服务的方法

    SpringBoot整合Scala构建Web服务的方法

    这篇文章主要介绍了SpringBoot整合Scala构建Web服务的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论