最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis的配置對象Configuration作用及說明

 更新時間:2025年03月11日 15:34:54   作者:冰糖心書房  
MyBatis的Configuration對象是MyBatis的核心配置對象,它包含了MyBatis運行時所需的幾乎所有配置信息,這個對象負責管理MappedStatement、創(chuàng)建核心組件、提供配置信息的訪問接口以及作為插件機制的入口

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í)行、參數(shù)設置、結果映射等)。
  • Environments: 環(huán)境配置,可以配置多個數(shù)據(jù)源環(huán)境(例如,開發(fā)環(huán)境、測試環(huán)境、生產環(huán)境)。
  • DatabaseId Provider: 數(shù)據(jù)庫廠商標識,用于根據(jù)不同的數(shù)據(jù)庫廠商執(zhí)行不同的 SQL 語句。
  • Mappers: 映射器配置,用于加載 SQL 映射文件或 Mapper 接口。

管理 MappedStatement: Configuration 對象維護了一個 MappedStatement 的注冊表(Map<String, MappedStatement>)。MappedStatement 對象代表一個 SQL 語句(select、insert、update、delete),它包含了 SQL 語句的 ID、參數(shù)類型、結果類型、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 對象(參數(shù)處理器,負責設置 SQL 語句的參數(shù))。
  • newResultSetHandler(...): 創(chuàng)建 ResultSetHandler 對象(結果集處理器,負責將 ResultSet 映射為 Java 對象)。

提供配置信息的訪問接口: Configuration 對象提供了一系列 getXXX() 方法,用于獲取各種配置信息。例如:

  • getVariables():獲取屬性配置
  • isCacheEnabled(): 獲取是否開啟緩存。
  • isLazyLoadingEnabled(): 獲取是否開啟延遲加載。
  • getTypeAliasRegistry(): 獲取類型別名注冊表。
  • getTypeHandlerRegistry(): 獲取類型處理器注冊表。
  • getMappedStatement(String id): 根據(jù) 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 對象的使用 (通常不需要直接操作)

  • 在大多數(shù)情況下,我們不需要直接操作 Configuration 對象。
  • MyBatis 內部會使用 Configuration 對象來執(zhí)行各種操作。

總結

Configuration 對象是 MyBatis 的核心配置對象,它包含了 MyBatis 運行時所需的幾乎所有配置信息,并負責管理 MappedStatement、創(chuàng)建核心組件、提供配置信息的訪問接口以及作為插件機制的入口。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java簡易登錄注冊功能實現(xiàn)代碼解析

    Java簡易登錄注冊功能實現(xiàn)代碼解析

    這篇文章主要介紹了Java簡易登錄注冊功能實現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • java+mysql實現(xiàn)登錄和注冊功能

    java+mysql實現(xiàn)登錄和注冊功能

    這篇文章主要為大家詳細介紹了java+mysql實現(xiàn)登錄和注冊功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • SpringBoot?使用?Sa-Token?完成注解鑒權功能(權限校驗)

    SpringBoot?使用?Sa-Token?完成注解鑒權功能(權限校驗)

    Sa-Token?是一個輕量級?java?權限認證框架,主要解決登錄認證、權限認證、單點登錄、OAuth2、微服務網關鑒權?等一系列權限相關問題,這篇文章主要介紹了SpringBoot使用Sa-Token完成注解鑒權功能,需要的朋友可以參考下
    2023-05-05
  • 面試總結:秒殺設計、AQS 、synchronized相關問題

    面試總結:秒殺設計、AQS 、synchronized相關問題

    Java語言的關鍵字,當它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼。本文給大家介紹java中 synchronized的用法,對本文感興趣的朋友一起看看吧
    2021-06-06
  • java 設計模式(DAO)的實例詳解

    java 設計模式(DAO)的實例詳解

    這篇文章主要介紹了java 設計模式(DAO)的實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java中Set特性與常用方法示例詳解

    Java中Set特性與常用方法示例詳解

    Java中的Set是Collection接口的子接口,不允許存儲重復元素,且不保證順序(除特定實現(xiàn)外),下面給大家介紹Java中Set特性與常用方法,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Spring如何動態(tài)自定義logback日志目錄詳解

    Spring如何動態(tài)自定義logback日志目錄詳解

    這篇文章主要給大家介紹了關于Spring如何動態(tài)自定義logback日志目錄的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-10-10
  • Java多線程下的單例模式參考

    Java多線程下的單例模式參考

    這篇文章主要演示多線程下的單例模式,分別演示了lock和synchronized兩種方案,希望能給大家做一個參考。
    2016-06-06
  • Java轉JSON串的幾種方式

    Java轉JSON串的幾種方式

    本文給大家總結一下java轉json串的幾種方式,每種方式通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05
  • Java框架篇:Spring+SpringMVC+hibernate整合開發(fā)

    Java框架篇:Spring+SpringMVC+hibernate整合開發(fā)

    本篇文章將會對Spring+SpringMVC+hibernate的整合開發(fā)進行介紹。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-02-02

最新評論

修水县| 闸北区| 石泉县| 闸北区| 肥城市| 竹山县| 定远县| 昌图县| 滁州市| 遂溪县| 双城市| 邵阳县| 秀山| 德阳市| 武义县| 宣化县| 沾化县| 岳西县| 醴陵市| 股票| 响水县| 珠海市| 太仆寺旗| 六枝特区| 耿马| 兴和县| 长岛县| 小金县| 泸州市| 会昌县| 紫金县| 宣汉县| 长汀县| 永胜县| 松滋市| 葫芦岛市| 定陶县| 南昌市| 军事| 资阳市| 确山县|