MyBatis的配置對象Configuration作用及說明
MyBatis配置對象Configuration作用
org.apache.ibatis.session.Configuration
是 MyBatis 的核心配置對象,它包含了 MyBatis 運行時所需的幾乎所有配置信息。可以把它理解為 MyBatis 的“大腦”或“配置中心”。
在 MyBatis 的初始化過程中,會解析 XML 配置文件或通過 Java 代碼構建一個 Configuration
對象,MyBatis 的其他組件(如 SqlSessionFactory
、Executor
、MappedStatement
等)都會依賴這個 Configuration
對象來獲取配置信息和執(zhí)行操作。
Configuration 對象的主要作用
保存全局配置信息: Configuration
對象保存了 MyBatis 的全局配置信息,這些信息通常在 mybatis-config.xml
文件中配置,或者通過 Java 代碼設置。 這些信息包括:
- Properties: 外部屬性配置(可以通過
<properties>
標簽或Properties
對象加載)。 - Settings: 全局設置,控制 MyBatis 的運行時行為(例如,是否開啟緩存、是否使用延遲加載、是否自動映射等)。
- Type Aliases: 類型別名,用于簡化 XML 配置文件中的類型引用。
- Type Handlers: 類型處理器,用于處理 Java 類型與 JDBC 類型之間的轉換。
- Object Factory: 對象工廠,用于創(chuàng)建結果對象。
- Plugins: 插件,用于攔截 MyBatis 的核心執(zhí)行流程(例如,攔截 SQL 執(zhí)行、參數設置、結果映射等)。
- Environments: 環(huán)境配置,可以配置多個數據源環(huán)境(例如,開發(fā)環(huán)境、測試環(huán)境、生產環(huán)境)。
- DatabaseId Provider: 數據庫廠商標識,用于根據不同的數據庫廠商執(zhí)行不同的 SQL 語句。
- Mappers: 映射器配置,用于加載 SQL 映射文件或 Mapper 接口。
管理 MappedStatement: Configuration
對象維護了一個 MappedStatement
的注冊表(Map<String, MappedStatement>
)。MappedStatement
對象代表一個 SQL 語句(select
、insert
、update
、delete
),它包含了 SQL 語句的 ID、參數類型、結果類型、SQL 語句內容等信息。Configuration
對象通過 MappedStatement
的 ID 來查找和管理 MappedStatement
。
創(chuàng)建核心組件: Configuration
對象提供了一些方法來創(chuàng)建 MyBatis 的核心組件,例如:
newExecutor(Transaction tx, ExecutorType executorType)
: 創(chuàng)建Executor
對象(執(zhí)行器,負責執(zhí)行 SQL 語句)。newStatementHandler(...)
: 創(chuàng)建StatementHandler
對象(語句處理器,負責處理 JDBC 的Statement
)。newParameterHandler(...)
: 創(chuàng)建ParameterHandler
對象(參數處理器,負責設置 SQL 語句的參數)。newResultSetHandler(...)
: 創(chuàng)建ResultSetHandler
對象(結果集處理器,負責將ResultSet
映射為 Java 對象)。
提供配置信息的訪問接口: Configuration
對象提供了一系列 getXXX()
方法,用于獲取各種配置信息。例如:
getVariables()
:獲取屬性配置isCacheEnabled()
: 獲取是否開啟緩存。isLazyLoadingEnabled()
: 獲取是否開啟延遲加載。getTypeAliasRegistry()
: 獲取類型別名注冊表。getTypeHandlerRegistry()
: 獲取類型處理器注冊表。getMappedStatement(String id)
: 根據 ID 獲取MappedStatement
對象。getEnvironment()
:獲取環(huán)境配置
插件機制的入口: Configuration
提供了添加和獲取插件的方法 (addInterceptor()
, getInterceptors()
),使得插件可以攔截 MyBatis 的核心執(zhí)行流程。
Configuration 對象的創(chuàng)建
Configuration
對象通常由SqlSessionFactoryBuilder
創(chuàng)建。SqlSessionFactoryBuilder
可以通過 XML 配置文件或 Java 代碼來構建Configuration
對象。
// 通過 XML 配置文件創(chuàng)建 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); Configuration configuration = sqlSessionFactory.getConfiguration(); // 通過 Java 代碼創(chuàng)建 Configuration configuration = new Configuration(); configuration.setCacheEnabled(true); // 設置緩存 configuration.setLazyLoadingEnabled(false); // 設置延遲加載 configuration.addMapper(UserMapper.class); // 添加 Mapper 接口 // ... 其他配置 ... SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
Configuration 對象的使用 (通常不需要直接操作)
- 在大多數情況下,我們不需要直接操作
Configuration
對象。 - MyBatis 內部會使用
Configuration
對象來執(zhí)行各種操作。
總結
Configuration
對象是 MyBatis 的核心配置對象,它包含了 MyBatis 運行時所需的幾乎所有配置信息,并負責管理 MappedStatement
、創(chuàng)建核心組件、提供配置信息的訪問接口以及作為插件機制的入口。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java使用OpenOffice將office文件轉換為PDF的示例方法
OpenOffice是一個開源的辦公套件,它包含了文檔處理、電子表格、演示文稿以及繪圖等多種功能,類似于Microsoft Office,本文將給大家介紹Java使用OpenOffice將office文件轉換為PDF的示例方法,需要的朋友可以參考下2024-09-09SpringBoot中@Scheduled()注解以及cron表達式詳解
這篇文章主要介紹了SpringBoot中@Scheduled()注解以及cron表達式詳解,@Scheduled注解是Spring Boot提供的用于定時任務控制的注解,主要用于控制任務在某個指定時間執(zhí)行,或者每隔一段時間執(zhí)行,需要的朋友可以參考下2023-08-08Java如何獲取數組和字符串的長度(length還是length())
這篇文章主要介紹了Java如何獲取數組和字符串的長度(length還是length()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12SpringBoot+JSON+AJAX+ECharts+Fiddler實現前后端分離開發(fā)可視化
這篇文章主要介紹了SpringBoot+JSON+AJAX+ECharts+Fiddler實現前后端分離開發(fā)可視化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06SpringBoot整合mybatis-generator插件流程詳細講解
這篇文章主要介紹了SpringBoot整合mybatis-generator插件流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-02-02