從前面的幾篇文章,我們簡單的介紹了mybatis的使用,以及如何用mybatis實現簡單的增刪改查。從這篇文章開始,我們將從其核心配置檔案入手,對mybatis支援的核心配置檔案進行簡單詳細的描述。之前的文章中我們在**中寫了乙個mybatisutils類,我們具體看下其**:
public
class
mybatisutils catch (ioexception e)
return sessionfactory;
}/**
* 獲取sqlsession
*@return sqlsession
*/public
static sqlsession getsqlsession()
}
這段**是我們在使用mybatis前的配置初始化過程,我們通過閱讀其原始碼來逐步了解內部實現原理。這段**首先是根據指定的配置檔案的路徑找到配置檔案,讀取配置檔案的內容。接下來就是sqlsessionfactorybuilder.build方法進行配置檔案的處理,我們詳細看下此類的**:
public
class sqlsessionfactorybuilder
public sqlsessionfactory build(reader reader, string environment)
public sqlsessionfactory build(reader reader, properties properties)
public sqlsessionfactory build(reader reader, string environment, properties properties) catch (exception e) finally catch (ioexception e)
}} public sqlsessionfactory build(inputstream inputstream)
public sqlsessionfactory build(inputstream inputstream, string environment)
public sqlsessionfactory build(inputstream inputstream, properties properties)
public sqlsessionfactory build(inputstream inputstream, string environment, properties properties) catch (exception e) finally catch (ioexception e)
}} public sqlsessionfactory build(configuration config)
}
通過此類的原始碼我們看到在這個類中,支援多種構造sqlsessionfactory的方法。可以只傳入mybatis配置檔案,也可以同時傳入properties配置檔案替代mybatis配置檔案中的元素標籤,另外也支援傳入環境引數envirmont引數。
我們跟隨著原始碼繼續往下看,在多個build方法最終都是用到了下面的方法:
public sqlsessionfactory build(reader reader, string environment, properties properties) catch (exception e) finally catch (ioexception e)
}}
我們可以看到這裡建立了乙個xmlconfigbuilder類例項,通過他來對mybatis配置檔案進行解析。我們看下此類的建構函式:
public
xmlconfigbuilder(reader reader, string environment, properties props)
我們看到內部用了xpathparser,繼續跟蹤**:
public
xpathparser(reader reader, boolean validation, properties variables, entityresolver entityresolver)
private document createdocument(inputsource inputsource)
@override
public
void
fatalerror(saxparseexception exception) throws saxexception
@override
public
void
warning(saxparseexception exception) throws saxexception
});return builder.parse(inputsource);
} catch (exception e)
}
分析**可以了解到,此方法主要就是讀取配置檔案到document中。接下來我們回到sqlsessionfactorybuilder的build方法中,build(parser.parse())這段**是具體解析配置檔案的入口,我們進入到parser.parse()方法內部:
public configuration parse()
parsed = true;
parseconfiguration(parser.evalnode("/configuration"));
return configuration;
} private
void
parseconfiguration(xnode root) catch (exception e)
}
Mybatis配置檔案
配置檔案經常會報錯上面一段提示,這是因為mybatis標籤必須按順序寫。properties settings typealiases configuration 注意 xml中的標籤順序不能隨便調換,否則會提示錯誤 mybatis使用自帶的資料庫連線池,不直接支援第三方連線池,不過網上有建立第三方...
mybatis配置檔案
1.sqlmapconfig.xml xml version 1.0 encoding utf 8 doctype configuration public config 3.0 en db.properties 配置別名 指定報名,別名就是類名,第乙個小寫 package name com.zxh...
Mybatis 配置檔案
我們知道由 sqlsessionfactorybuilder 去建立 sqlsessionfactory,那麼,我們就先從sqlsessionfactorybuilder入手,咱們先看看原始碼是怎麼實現的 sqlsessionfactorybuilder原始碼片段 public class sqls...