iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Software Development

我在 Spring Boot 3 裡面挖呀挖呀挖系列 第 28

Day27 - Mybatis AutoConfiguration

  • 分享至 

  • xImage
  •  

Day27 - Mybatis AutoConfiguration

前言

昨日我們快速建立了SSM專案,今日我們來說說mybatis-spring-boot-starter裡面幫我們自動配置了那些組件吧

專案建立

創建module

https://ithelp.ithome.com.tw/upload/images/20231013/20128084FKByoVCGEZ.png
https://ithelp.ithome.com.tw/upload/images/20231013/201280847dsfYpvQ7B.png

Mybatis AutoConfiguration

SSM 流程

  1. 導入mybatis-spring-boot-starter
  2. 設定datasource
  3. 配置mybatis的mapper接口掃描與xml映射文件掃描
  4. 編寫bean,mapper,生成xml,編寫sql 進行crud。Transaction操作與Spring相同

mybatis-spring-boot-starter

https://ithelp.ithome.com.tw/upload/images/20231013/20128084x8IdDCe97S.png

spring-boot-starter-jdbc

  • org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
    • datasource的自動配置
    • 相關設定綁定於DataSourceProperties
    • 預設使用HikariDataSource
  • org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
    • 給Spring容器中放了JdbcTemplate操作數據庫
  • org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
  • org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration
    • 基於XA二階提交協議的分布式事務數據源
  • org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
    • Transaction支持

mybatis-spring-boot-autoconfigure

https://ithelp.ithome.com.tw/upload/images/20231013/20128084HQVY5zph2F.png

  • org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
  • org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
    • datasource配置好之後才配置
    • 給容器中配置SqlSessionFactory組件,負責創建和數據庫的一次會話
    • 給容器中配置SqlSessionTemplate組件,負責操作數據庫
  • MyBatis的配置綁定在MybatisProperties
  • 每個Mapper接口的代理對象透過@MapperScan利用@Import(MapperScannerRegistrar.class)批量給容器中注冊組件。為每一個Mapper接口類,創建Bean定義信息,注冊到容器中。

快速定位生效的配置

可以在設定檔中加入debug=true,可以快速看到那些配置有生效(# Positive(生效的自動配置) Negative(不生效的自動配置))
https://ithelp.ithome.com.tw/upload/images/20231013/20128084C9xbyS4vzj.png

使用其他datasource - druid

pom.xml設定

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.20</version>
</dependency>

只需要修改datasource的type即可

spring:
  datasource:
    driver-class-name: 'org.h2.Driver'
    url: 'jdbc:h2:mem:springdb'
    username: 'sa'
    password:
    type: com.alibaba.druid.pool.DruidDataSource

啟動Spring Boot3結果
https://ithelp.ithome.com.tw/upload/images/20231013/20128084jK4PdVEsjS.png

Reference


上一篇
Day26 - SSM
下一篇
Day28 - SpringApplication
系列文
我在 Spring Boot 3 裡面挖呀挖呀挖31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言