亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis的配置對(duì)象Configuration作用及說(shuō)明

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

MyBatis配置對(duì)象Configuration作用

org.apache.ibatis.session.Configuration 是 MyBatis 的核心配置對(duì)象,它包含了 MyBatis 運(yùn)行時(shí)所需的幾乎所有配置信息??梢园阉斫鉃?MyBatis 的“大腦”或“配置中心”。

在 MyBatis 的初始化過(guò)程中,會(huì)解析 XML 配置文件或通過(guò) Java 代碼構(gòu)建一個(gè) Configuration 對(duì)象,MyBatis 的其他組件(如 SqlSessionFactoryExecutor、MappedStatement 等)都會(huì)依賴這個(gè) Configuration 對(duì)象來(lái)獲取配置信息和執(zhí)行操作。

Configuration 對(duì)象的主要作用

保存全局配置信息: Configuration 對(duì)象保存了 MyBatis 的全局配置信息,這些信息通常在 mybatis-config.xml 文件中配置,或者通過(guò) Java 代碼設(shè)置。 這些信息包括:

  • Properties: 外部屬性配置(可以通過(guò) <properties> 標(biāo)簽或 Properties 對(duì)象加載)。
  • Settings: 全局設(shè)置,控制 MyBatis 的運(yùn)行時(shí)行為(例如,是否開啟緩存、是否使用延遲加載、是否自動(dòng)映射等)。
  • Type Aliases: 類型別名,用于簡(jiǎn)化 XML 配置文件中的類型引用。
  • Type Handlers: 類型處理器,用于處理 Java 類型與 JDBC 類型之間的轉(zhuǎn)換。
  • Object Factory: 對(duì)象工廠,用于創(chuàng)建結(jié)果對(duì)象。
  • Plugins: 插件,用于攔截 MyBatis 的核心執(zhí)行流程(例如,攔截 SQL 執(zhí)行、參數(shù)設(shè)置、結(jié)果映射等)。
  • Environments: 環(huán)境配置,可以配置多個(gè)數(shù)據(jù)源環(huán)境(例如,開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境)。
  • DatabaseId Provider: 數(shù)據(jù)庫(kù)廠商標(biāo)識(shí),用于根據(jù)不同的數(shù)據(jù)庫(kù)廠商執(zhí)行不同的 SQL 語(yǔ)句。
  • Mappers: 映射器配置,用于加載 SQL 映射文件或 Mapper 接口。

管理 MappedStatement: Configuration 對(duì)象維護(hù)了一個(gè) MappedStatement 的注冊(cè)表(Map<String, MappedStatement>)。MappedStatement 對(duì)象代表一個(gè) SQL 語(yǔ)句(select、insert、update、delete),它包含了 SQL 語(yǔ)句的 ID、參數(shù)類型、結(jié)果類型、SQL 語(yǔ)句內(nèi)容等信息。Configuration 對(duì)象通過(guò) MappedStatement 的 ID 來(lái)查找和管理 MappedStatement。

創(chuàng)建核心組件: Configuration 對(duì)象提供了一些方法來(lái)創(chuàng)建 MyBatis 的核心組件,例如:

  • newExecutor(Transaction tx, ExecutorType executorType): 創(chuàng)建 Executor 對(duì)象(執(zhí)行器,負(fù)責(zé)執(zhí)行 SQL 語(yǔ)句)。
  • newStatementHandler(...): 創(chuàng)建 StatementHandler 對(duì)象(語(yǔ)句處理器,負(fù)責(zé)處理 JDBC 的 Statement)。
  • newParameterHandler(...): 創(chuàng)建 ParameterHandler 對(duì)象(參數(shù)處理器,負(fù)責(zé)設(shè)置 SQL 語(yǔ)句的參數(shù))。
  • newResultSetHandler(...): 創(chuàng)建 ResultSetHandler 對(duì)象(結(jié)果集處理器,負(fù)責(zé)將 ResultSet 映射為 Java 對(duì)象)。

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

  • getVariables():獲取屬性配置
  • isCacheEnabled(): 獲取是否開啟緩存。
  • isLazyLoadingEnabled(): 獲取是否開啟延遲加載。
  • getTypeAliasRegistry(): 獲取類型別名注冊(cè)表。
  • getTypeHandlerRegistry(): 獲取類型處理器注冊(cè)表。
  • getMappedStatement(String id): 根據(jù) ID 獲取 MappedStatement 對(duì)象。
  • getEnvironment():獲取環(huán)境配置

插件機(jī)制的入口: Configuration 提供了添加和獲取插件的方法 (addInterceptor(), getInterceptors()),使得插件可以攔截 MyBatis 的核心執(zhí)行流程。

Configuration 對(duì)象的創(chuàng)建

  • Configuration 對(duì)象通常由 SqlSessionFactoryBuilder 創(chuàng)建。
  • SqlSessionFactoryBuilder 可以通過(guò) XML 配置文件或 Java 代碼來(lái)構(gòu)建 Configuration 對(duì)象。
// 通過(guò) XML 配置文件創(chuàng)建
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
Configuration configuration = sqlSessionFactory.getConfiguration();


// 通過(guò) Java 代碼創(chuàng)建
Configuration configuration = new Configuration();
configuration.setCacheEnabled(true); // 設(shè)置緩存
configuration.setLazyLoadingEnabled(false); // 設(shè)置延遲加載
configuration.addMapper(UserMapper.class); // 添加 Mapper 接口
// ... 其他配置 ...
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

Configuration 對(duì)象的使用 (通常不需要直接操作)

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

總結(jié)

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用OpenOffice將office文件轉(zhuǎn)換為PDF的示例方法

    Java使用OpenOffice將office文件轉(zhuǎn)換為PDF的示例方法

    OpenOffice是一個(gè)開源的辦公套件,它包含了文檔處理、電子表格、演示文稿以及繪圖等多種功能,類似于Microsoft Office,本文將給大家介紹Java使用OpenOffice將office文件轉(zhuǎn)換為PDF的示例方法,需要的朋友可以參考下
    2024-09-09
  • SpringBoot中@Scheduled()注解以及cron表達(dá)式詳解

    SpringBoot中@Scheduled()注解以及cron表達(dá)式詳解

    這篇文章主要介紹了SpringBoot中@Scheduled()注解以及cron表達(dá)式詳解,@Scheduled注解是Spring Boot提供的用于定時(shí)任務(wù)控制的注解,主要用于控制任務(wù)在某個(gè)指定時(shí)間執(zhí)行,或者每隔一段時(shí)間執(zhí)行,需要的朋友可以參考下
    2023-08-08
  • Spring Security自定義認(rèn)證器的實(shí)現(xiàn)代碼

    Spring Security自定義認(rèn)證器的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring Security自定義認(rèn)證器的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • SpringBoot設(shè)置Session失效時(shí)間的解決方案

    SpringBoot設(shè)置Session失效時(shí)間的解決方案

    當(dāng)過(guò)期時(shí)間是大于1分鐘的時(shí)候是沒有什么問(wèn)題的,但是如果設(shè)置過(guò)期時(shí)間小于1分鐘,就會(huì)失效,這篇文章主要介紹了SpringBoot設(shè)置Session失效時(shí)間的解決方案,需要的朋友可以參考下
    2024-05-05
  • Java如何獲取數(shù)組和字符串的長(zhǎng)度(length還是length())

    Java如何獲取數(shù)組和字符串的長(zhǎng)度(length還是length())

    這篇文章主要介紹了Java如何獲取數(shù)組和字符串的長(zhǎng)度(length還是length()),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 關(guān)于IntelliJ IDEA 打包代碼報(bào)錯(cuò)的問(wèn)題

    關(guān)于IntelliJ IDEA 打包代碼報(bào)錯(cuò)的問(wèn)題

    這篇文章主要介紹了關(guān)于IntelliJ IDEA 打包代碼報(bào)錯(cuò)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Hadoop 中 HBase Shell命令的詳解

    Hadoop 中 HBase Shell命令的詳解

    這篇文章主要介紹了Hadoop 中 HBase Shell命令的詳解的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • SpringBoot+JSON+AJAX+ECharts+Fiddler實(shí)現(xiàn)前后端分離開發(fā)可視化

    SpringBoot+JSON+AJAX+ECharts+Fiddler實(shí)現(xiàn)前后端分離開發(fā)可視化

    這篇文章主要介紹了SpringBoot+JSON+AJAX+ECharts+Fiddler實(shí)現(xiàn)前后端分離開發(fā)可視化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • SpringBoot整合mybatis-generator插件流程詳細(xì)講解

    SpringBoot整合mybatis-generator插件流程詳細(xì)講解

    這篇文章主要介紹了SpringBoot整合mybatis-generator插件流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • 解決swagger主頁(yè)訪問(wèn),返回報(bào)錯(cuò)500問(wèn)題

    解決swagger主頁(yè)訪問(wèn),返回報(bào)錯(cuò)500問(wèn)題

    在使用Swagger時(shí)遇到500錯(cuò)誤,通過(guò)仔細(xì)的debug發(fā)現(xiàn)問(wèn)題源于注解使用不當(dāng),具體表現(xiàn)為一個(gè)接口的入?yún)⒈诲e(cuò)誤地注解了三個(gè)參數(shù),而實(shí)際上只有兩個(gè),這導(dǎo)致了Swagger在解析時(shí)拋出了NullPointerException異常,解決方法是刪除錯(cuò)誤的第三個(gè)參數(shù)的注解
    2024-09-09

最新評(píng)論