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

MyBatis連接數(shù)據(jù)庫配置的基本步驟和機(jī)制

 更新時(shí)間:2024年05月16日 08:42:10   作者:鄧?yán)贒L  
MyBatis 是一個(gè)流行的持久層框架,它通過使用XML或注解的方式將SQL語句、存儲(chǔ)過程和Java方法進(jìn)行綁定,從而避免了手寫大量的JDBC代碼和手動(dòng)設(shè)置參數(shù)與結(jié)果集,本文給大家介紹了MyBatis連接數(shù)據(jù)庫配置的基本步驟和機(jī)制,需要的朋友可以參考下

前言

MyBatis 是一個(gè)流行的持久層框架,它通過使用XML或注解的方式將SQL語句、存儲(chǔ)過程和Java方法進(jìn)行綁定,從而避免了手寫大量的JDBC代碼和手動(dòng)設(shè)置參數(shù)與結(jié)果集。以下是 MyBatis 連接數(shù)據(jù)庫的基本步驟和機(jī)制:

MyBatis源碼版本:3.5.16

MyBatis-config.xml 示例

<environments default="development">  
    <environment id="development">  
        <transactionManager type="JDBC"/>  
        <dataSource type="POOLED">  
            <property name="driver" value="${db.driver}"/>  
            <property name="url" value="${db.url}"/>  
            <property name="username" value="${db.username}"/>  
            <property name="password" value="${db.password}"/>  
        </dataSource>  
    </environment>  
</environments>

1. 讀取配置文件

MyBatis 通過 Resources 類讀取配置文件。配置文件通常是 XML 格式,如 mybatis-config.xml。

關(guān)鍵代碼

String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource)

2. 解析配置文件

SqlSessionFactoryBuilder 使用 XMLConfigBuilder 解析配置文件,將 XML 配置轉(zhuǎn)換為 Java 對(duì)象。

關(guān)鍵代碼

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);

XMLConfigBuilder 源碼片段

private void parseConfiguration(XNode root) {  
  try {  
    // issue #117 先讀取屬性 
    propertiesElement(root.evalNode("properties"));  
    Properties settings = settingsAsProperties(root.evalNode("settings"));  
    loadCustomVfsImpl(settings);  
    loadCustomLogImpl(settings);  
    typeAliasesElement(root.evalNode("typeAliases"));  
    pluginsElement(root.evalNode("plugins"));  
    objectFactoryElement(root.evalNode("objectFactory"));  
    objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));  
    reflectorFactoryElement(root.evalNode("reflectorFactory"));  
    settingsElement(settings);  
    // read it after objectFactory and objectWrapperFactory issue #631  
    environmentsElement(root.evalNode("environments"));  
    databaseIdProviderElement(root.evalNode("databaseIdProvider"));  
    typeHandlersElement(root.evalNode("typeHandlers"));  
    mappersElement(root.evalNode("mappers"));  
  } catch (Exception e) {  
    throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);  
  }  
}

XMLConfigBuilder解析XML配置,并生成Configuration對(duì)象。

3. 創(chuàng)建 SqlSessionFactory

Configuration 對(duì)象包含了所有配置信息,包括環(huán)境配置、數(shù)據(jù)源配置等。SqlSessionFactoryBuilder 使用 Configuration 創(chuàng)建 DefaultSqlSessionFactory

關(guān)鍵代碼

public SqlSessionFactory build(Configuration config) {  
  return new DefaultSqlSessionFactory(config);  
}

4. 建立數(shù)據(jù)庫連接

DefaultSqlSessionFactory 創(chuàng)建 SqlSession 時(shí),通過 Environment 配置和 DataSource 獲取數(shù)據(jù)庫連接。

DefaultSqlSessionFactory 源碼片段

public SqlSession openSession() {  
  return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);  
}

openSessionFromDataSource 方法中,DataSource 被用于獲取數(shù)據(jù)庫連接。

關(guān)鍵代碼

private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level,  
    boolean autoCommit) {  
  //環(huán)境配置  
  final Environment environment = configuration.getEnvironment();  
  //事務(wù)工廠  
  final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment);  
  //創(chuàng)建事務(wù)  
  Transaction tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit);  
  //創(chuàng)建執(zhí)行器  
  final Executor executor = configuration.newExecutor(tx, execType);  
  //返回SqlSession  
  return new DefaultSqlSession(configuration, executor, autoCommit);
}

5. 數(shù)據(jù)源配置

DataSource 配置在 mybatis-config.xml 文件中,通過 DataSourceFactory 創(chuàng)建具體的數(shù)據(jù)源實(shí)例。

關(guān)鍵代碼

// 獲取數(shù)據(jù)源工廠
String type = context.getStringAttribute("type");  
Properties props = context.getChildrenAsProperties();  
DataSourceFactory factory = (DataSourceFactory) resolveClass(type).getDeclaredConstructor().newInstance();  
factory.setProperties(props);    
// 獲取數(shù)據(jù)源
DataSource dataSource = factory.getDataSource();

總結(jié)

MyBatis連接數(shù)據(jù)庫的步驟包括:

  • 讀取配置文件:通過 Resources 類讀取 XML 文件。
  • 解析配置文件:使用 XMLConfigBuilder 解析 XML,生成 Configuration 對(duì)象。
  • 創(chuàng)建 SqlSessionFactory:使用 SqlSessionFactoryBuilderConfiguration 創(chuàng)建 DefaultSqlSessionFactory。
  • 建立數(shù)據(jù)庫連接DefaultSqlSessionFactory 創(chuàng)建 SqlSession,使用 DataSource 獲取數(shù)據(jù)庫連接。

以上就是MyBatis連接數(shù)據(jù)庫配置的基本步驟和機(jī)制的詳細(xì)內(nèi)容,更多關(guān)于MyBatis連接數(shù)據(jù)庫配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java之Spring注解配置bean實(shí)例代碼解析

    Java之Spring注解配置bean實(shí)例代碼解析

    這篇文章主要介紹了Java之Spring注解配置bean實(shí)例代碼解析,具有一定參考價(jià)值,文中還有有關(guān)Spring學(xué)習(xí)的資料下載鏈接及相關(guān)內(nèi)容推薦,需要的朋友可以了解下。
    2017-09-09
  • Java實(shí)現(xiàn)本地文件批量重命名的示例代碼

    Java實(shí)現(xiàn)本地文件批量重命名的示例代碼

    本文主要介紹了Java實(shí)現(xiàn)本地文件批量重命名的示例代碼,主要步驟為獲取指定目錄下的所有文件,對(duì)每個(gè)文件進(jìn)行修改,將修改后的文件名賦給該文件,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Spring的循環(huán)依賴、三級(jí)緩存解決方案源碼詳細(xì)解析

    Spring的循環(huán)依賴、三級(jí)緩存解決方案源碼詳細(xì)解析

    這篇文章主要介紹了Spring的循環(huán)依賴、三級(jí)緩存解決方案源碼詳細(xì)解析,在Spring中,由于IOC的控制反轉(zhuǎn),創(chuàng)建對(duì)象不再是簡單的new出來,而是交給Spring去創(chuàng)建,會(huì)經(jīng)歷一系列Bean的生命周期才創(chuàng)建出相應(yīng)的對(duì)象,需要的朋友可以參考下
    2024-01-01
  • Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較

    Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較

    比較對(duì)象是面向?qū)ο缶幊陶Z言的一個(gè)基本特征,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • SpringBoot項(xiàng)目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫的過程

    SpringBoot項(xiàng)目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫的過程

    SQLite是一個(gè)緊湊的庫,啟用所有功能后,庫大小可以小于 750KiB, 具體取決于目標(biāo)平臺(tái)和編譯器優(yōu)化設(shè)置, 內(nèi)存使用量和速度之間需要權(quán)衡,這篇文章主要介紹了SpringBoot項(xiàng)目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫,需要的朋友可以參考下
    2024-07-07
  • Java多線程之搞定最后一公里詳解

    Java多線程之搞定最后一公里詳解

    Java 給多線程編程提供了內(nèi)置的支持。 一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù),多線程是多任務(wù)的一種特別的形式,但多線程使用了更小的資源開銷
    2021-10-10
  • Spring中Feign的調(diào)用流程詳解

    Spring中Feign的調(diào)用流程詳解

    這篇文章主要介紹了Spring中Feign的調(diào)用流程詳解,分析過了創(chuàng)建的代理是FeignInvocationHandler,那我們就打斷點(diǎn),停在它的反射方法上,看看到底做了什么,需要的朋友可以參考下
    2023-11-11
  • Java使用pdfbox實(shí)現(xiàn)給pdf文件加圖片水印

    Java使用pdfbox實(shí)現(xiàn)給pdf文件加圖片水印

    有時(shí)候需要給pdf加水印,市面上工具都是收費(fèi)的要會(huì)員,還是自食其力吧;嘗試過 spire.pdf.free 那個(gè)超過10頁就不行了!所以本文還是使用了pdfbox,感興趣的可以了解一下
    2022-11-11
  • mybatis-plus之如何實(shí)現(xiàn)in嵌套sql

    mybatis-plus之如何實(shí)現(xiàn)in嵌套sql

    這篇文章主要介紹了mybatis-plus之如何實(shí)現(xiàn)in嵌套sql問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Servlet的5種方式實(shí)現(xiàn)表單提交(注冊(cè)小功能),后臺(tái)獲取表單數(shù)據(jù)實(shí)例

    Servlet的5種方式實(shí)現(xiàn)表單提交(注冊(cè)小功能),后臺(tái)獲取表單數(shù)據(jù)實(shí)例

    這篇文章主要介紹了Servlet的5種方式實(shí)現(xiàn)表單提交(注冊(cè)小功能),后臺(tái)獲取表單數(shù)據(jù)實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05

最新評(píng)論

克拉玛依市| 彭州市| 绵竹市| 读书| 武邑县| 天台县| 临潭县| 成都市| 彰武县| 揭东县| 楚雄市| 花莲县| 新田县| 增城市| 蓝田县| 扎赉特旗| 曲水县| 西盟| 星座| 交城县| 友谊县| 南和县| 兴国县| 盘山县| 司法| 邻水| 湖南省| 北碚区| 兴国县| 平安县| 浏阳市| 临漳县| 江永县| 和田市| 林口县| 郴州市| 镇赉县| 安达市| 宁南县| 兴海县| 南皮县|