Spring?Boot?微服務(wù)中集成?MyBatis-Plus?與集成原生?MyBatis在配置上的不同
在Spring Boot 微服務(wù)中集成 MyBatis-Plus (MP) 與集成原生 MyBatis (MB) 在配置上的主要不同點(diǎn)。MyBatis-Plus 是在 MyBatis 基礎(chǔ)上進(jìn)行的增強(qiáng),它兼容 MyBatis 的所有配置方式,并提供了更簡潔、更強(qiáng)大的配置選項(xiàng)。
相同點(diǎn):
基礎(chǔ)數(shù)據(jù)源配置 (DataSource Configuration):
完全相同。
無論是使用原生 MB 還是 MP,在 application.yml
或 application.properties
文件中配置數(shù)據(jù)庫連接信息的方式是一樣的。Spring Boot 會(huì)自動(dòng)配置數(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: 30000
Mapper 接口掃描 (Mapper Interface Scanning):
完全相同。 兩者都需要使用 @MapperScan
注解來告訴 Spring Boot 在哪個(gè)包路徑下查找 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 推薦) 屬性來指定實(shí)體類所在的包,以便在 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
文件路徑,用于進(jìn)行一些 MyBatis 核心的、無法通過 properties 文件配置的設(shè)置(如自定義 TypeHandler、ObjectFactory、插件等)。但在 MP 中,由于其強(qiáng)大的配置能力,對 mybatis-config.xml
的依賴通常會(huì)減少。
不同點(diǎn):
依賴項(xiàng) (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
,所以不需要重復(fù)引入原生 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
配置項(xiàng)指定 Mapper XML 文件的路徑,因?yàn)楹诵?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)造器進(jìn)行開發(fā),對于基礎(chǔ) CRUD 和許多動(dòng)態(tài)查詢,你可能不需要編寫任何 XML 文件,此時(shí)這個(gè)配置項(xiàng)就不是必需的(但通常建議配置以備不時(shí)之需或保持一致性)。
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
配置項(xiàng)來控制全局行為,主要通過 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 生成策略、邏輯刪除、數(shù)據(jù)庫基本配置(表名/字段名處理)、Banner 開關(guān)等 MP 特有功能的全局默認(rèn)設(shè)置。
插件配置 (Plugin Configuration):
- 原生 MB: 插件(如分頁插件 PageHelper)通常需要單獨(dú)引入依賴,并在
mybatis-config.xml
或通過 JavaBean
的方式進(jìn)行配置和注冊。 - MP: 內(nèi)置了許多常用插件(分頁、樂觀鎖、多租戶、防全表更新等),可以通過
application.yml/properties
的mybatis-plus.plugins.*
配置項(xiàng)直接啟用和配置,更加方便和標(biāo)準(zhǔn)化。
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é):
配置項(xiàng)/方面 | 原生 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 (推薦, 僅當(dāng)使用 XML 時(shí)必需) | 異同: 屬性名推薦不同,對 XML 的依賴程度 MP 更低 |
mybatis-config.xml | mybatis.config-location (較常用) | mybatis-plus.config-location (推薦, 兼容前者, 依賴度降低) | 異同: 都支持,但 MP 通過 properties 提供了更多配置項(xiàng),減少了對 XML 的需要 |
全局配置 | 主要在 XML 或有限的 mybatis.configuration.* | 更豐富的 mybatis-plus.global-config.* 和 mybatis-plus.configuration.* 屬性 | 不同: MP 的 Properties 配置能力更強(qiáng) |
插件配置 | 通常需額外依賴 + XML/Bean 配置 | 內(nèi)置常用插件,可通過 mybatis-plus.plugins.* 屬性配置 | 不同: MP 極大簡化了常用插件的配置 |
總的來說,在 Spring Boot 微服務(wù)中,MyBatis-Plus 通過其 Boot Starter 和豐富的配置屬性,極大的簡化了 MyBatis 的集成和配置工作,尤其是對于全局設(shè)置和常用插件的使用。它在保持與原生 MyBatis 兼容性的同時(shí),提供了更符合 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 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源的完整方案
- 全網(wǎng)最新springboot整合mybatis-plus的過程
- 5分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項(xiàng)目的實(shí)現(xiàn)示例
- 解決mybatis-plus-boot-starter與mybatis-spring-boot-starter的錯(cuò)誤問題
- SpringBoot同時(shí)集成Mybatis和Mybatis-plus框架
- 淺談Spring Boot、MyBatis、MyBatis-Plus 依賴版本對應(yīng)關(guān)系
相關(guān)文章
java中JDBC實(shí)現(xiàn)往MySQL插入百萬級數(shù)據(jù)的實(shí)例代碼
這篇文章主要介紹了java中JDBC實(shí)現(xiàn)往MySQL插入百萬級數(shù)據(jù)的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01JAVA實(shí)戰(zhàn)練習(xí)之圖書管理系統(tǒng)實(shí)現(xiàn)流程
隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對圖書館的日常工作進(jìn)行管理勢在必行,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)圖書管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-10-10解決springboot3:mybatis-plus依賴錯(cuò)誤:org.springframework.beans.fac
這篇文章主要介紹了解決springboot3:mybatis-plus依賴錯(cuò)誤:org.springframework.beans.factory.UnsatisfiedDependencyException問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07SpringBoot自動(dòng)配置深入探究實(shí)現(xiàn)原理
在springboot的啟動(dòng)類中可以看到@SpringBootApplication注解,它是SpringBoot的核心注解,也是一個(gè)組合注解。其中@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三個(gè)注解尤為重要。今天我們就來淺析這三個(gè)注解的含義2022-08-08mybatis中關(guān)于mapper的使用以及注意事項(xiàng)
這篇文章主要介紹了mybatis中關(guān)于mapper的使用以及注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06使用System.exit()來優(yōu)雅地終止SpringBoot項(xiàng)目的代碼示例
System.exit() 方法是 Java 中用于退出程序的方法,它接受一個(gè)整數(shù)參數(shù),通常被用來指示程序的退出狀態(tài),本文給大家介紹了如何使用System.exit()來優(yōu)雅地終止SpringBoot項(xiàng)目,需要的朋友可以參考下2024-08-08Log4j關(guān)閉Spring和Hibernate日志打印方式
這篇文章主要介紹了Log4j關(guān)閉Spring和Hibernate日志打印方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot整合Scala構(gòu)建Web服務(wù)的方法
這篇文章主要介紹了SpringBoot整合Scala構(gòu)建Web服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03