Spring?Boot?微服務(wù)中集成?MyBatis-Plus?與集成原生?MyBatis在配置上的不同
在Spring Boot 微服務(wù)中集成 MyBatis-Plus (MP) 與集成原生 MyBatis (MB) 在配置上的主要不同點。MyBatis-Plus 是在 MyBatis 基礎(chǔ)上進行的增強,它兼容 MyBatis 的所有配置方式,并提供了更簡潔、更強大的配置選項。
相同點:
基礎(chǔ)數(shù)據(jù)源配置 (DataSource Configuration):
完全相同。
無論是使用原生 MB 還是 MP,在 application.yml 或 application.properties 文件中配置數(shù)據(jù)庫連接信息的方式是一樣的。Spring Boot 會自動配置數(shù)據(jù)源(通常是 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: 30000Mapper 接口掃描 (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 中或內(nèi)部使用類名的簡寫。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 推薦) 指定傳統(tǒng)的 mybatis-config.xml 文件路徑,用于進行一些 MyBatis 核心的、無法通過 properties 文件配置的設(shè)置(如自定義 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 已經(jīng)包含了 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 條件構(gòu)造器進行開發(fā),對于基礎(chǔ) CRUD 和許多動態(tài)查詢,你可能不需要編寫任何 XML 文件,此時這個配置項就不是必需的(但通常建議配置以備不時之需或保持一致性)。
mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml # Configure if using custom XML SQL
全局配置 (Global Configuration):
原生 MB: 大部分全局配置需要在 mybatis-config.xml 中設(shè)置,或者通過有限的 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 startupMP 的 global-config 提供了對 ID 生成策略、邏輯刪除、數(shù)據(jù)庫基本配置(表名/字段名處理)、Banner 開關(guān)等 MP 特有功能的全局默認設(shè)置。
插件配置 (Plugin Configuration):
- 原生 MB: 插件(如分頁插件 PageHelper)通常需要單獨引入依賴,并在
mybatis-config.xml或通過 JavaBean的方式進行配置和注冊。 - MP: 內(nèi)置了許多常用插件(分頁、樂觀鎖、多租戶、防全表更新等),可以通過
application.yml/properties的mybatis-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總結(jié):
| 配置項/方面 | 原生 MyBatis (MB) | MyBatis-Plus (MP) | 異同說明 |
|---|---|---|---|
| 依賴 Starter | mybatis-spring-boot-starter | mybatis-plus-boot-starter (包含前者) | 不同: 使用不同的 Starter |
| 數(shù)據(jù)源配置 | spring.datasource.* | spring.datasource.* | 相同: 由 Spring Boot 統(tǒng)一管理 |
| Mapper 接口掃描 | @MapperScan | @MapperScan | 相同: 都需要指定 Mapper 包路徑 |
| 類型別名包 | mybatis.type-aliases-package | mybatis-plus.type-aliases-package (推薦, 兼容前者) | 基本相同: 功能一致,MP 推薦使用其命名空間 |
| Mapper XML 位置 | mybatis.mapper-locations (通常必需) | mybatis-plus.mapper-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 配置 | 內(nèi)置常用插件,可通過 mybatis-plus.plugins.* 屬性配置 | 不同: MP 極大簡化了常用插件的配置 |
總的來說,在 Spring Boot 微服務(wù)中,MyBatis-Plus 通過其 Boot Starter 和豐富的配置屬性,極大的簡化了 MyBatis 的集成和配置工作,尤其是對于全局設(shè)置和常用插件的使用。它在保持與原生 MyBatis 兼容性的同時,提供了更符合 Spring Boot “約定優(yōu)于配置” 理念的方式。
到此這篇關(guān)于Spring Boot 微服務(wù)中集成 MyBatis-Plus 與集成原生 MyBatis在配置上的不同的文章就介紹到這了,更多相關(guān)Spring Boot 集成 MyBatis-Plus 與 MyBatis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Boot 3.4.0 結(jié)合 Mybatis-plus 實現(xiàn)動態(tài)數(shù)據(jù)源的完整方案
- 全網(wǎng)最新springboot整合mybatis-plus的過程
- 5分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項目的實現(xiàn)示例
- 解決mybatis-plus-boot-starter與mybatis-spring-boot-starter的錯誤問題
- SpringBoot同時集成Mybatis和Mybatis-plus框架
- 淺談Spring Boot、MyBatis、MyBatis-Plus 依賴版本對應關(guān)系
相關(guān)文章
Spring Boot利用Thymeleaf發(fā)送Email的方法教程
spring Boot默認就是使用thymeleaf模板引擎的,下面這篇文章主要給大家介紹了關(guān)于在Spring Boot中利用Thymeleaf發(fā)送Email的方法教程,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-08-08
SpringBoot整合iText7導出PDF及性能優(yōu)化方式
在SpringBoot項目中整合iText7庫以導出PDF文件,不僅能夠滿足報告生成需求,而且可以處理復雜的文檔布局與樣式,整合步驟包括添加Maven依賴、編寫PDF生成代碼,性能優(yōu)化方面,建議使用流式處理、緩存樣式與字體、優(yōu)化HTML/CSS結(jié)構(gòu)、采用異步處理2024-09-09
Spring Boot啟動過程(五)之Springboot內(nèi)嵌Tomcat對象的start教程詳解
這篇文章主要介紹了Spring Boot啟動過程(五)之Springboot內(nèi)嵌Tomcat對象的start的相關(guān)資料,需要的朋友可以參考下2017-04-04
spring security集成cas實現(xiàn)單點登錄過程
這篇文章主要介紹了spring security集成cas實現(xiàn)單點登錄過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Java數(shù)組隊列及環(huán)形數(shù)組隊列超詳細講解
隊列是一個有序列表,可以用數(shù)組和鏈表來實現(xiàn),隊列有一個原則。即:先存入隊列的數(shù)據(jù)要先取出,后存入的要后取出,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-09-09

