可以說每個(gè)MyBatis都是以一個(gè)SqlSessionFactory實(shí)例為中心的。SqlSessionFactory實(shí)例可以通過SqlSessionFactoryBuilder來構(gòu)建。一是可以通過XML配置文件的方式來構(gòu)建SqlSessionFactory,二是可以通過Java API的方式來構(gòu)建。但不管通過什么方式都有一個(gè)Configuration貫穿始終,各種配置正是通過Configuration實(shí)例來完成實(shí)現(xiàn)。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供五指山網(wǎng)站建設(shè)、五指山做網(wǎng)站、五指山網(wǎng)站設(shè)計(jì)、五指山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、五指山企業(yè)網(wǎng)站模板建站服務(wù),10余年五指山做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
public class SqlSessionFactoryBuilder {
// (1) 從配置文件獲取SqlSessionFactory
public SqlSessionFactory build(Reader reader) {
return build(reader, null, null);
}
// (2) 從配置文件獲取SqlSessionFactory,并設(shè)定依賴哪種環(huán)境參數(shù)(開發(fā)環(huán)境/生產(chǎn)環(huán)境)
public SqlSessionFactory build(Reader reader, String environment) {
return build(reader, environment, null);
}
// (3) 從配置文件獲取SqlSessionFactory,并設(shè)定依賴哪些配置參數(shù)(屬性配置文件,那些屬性可以用${propName}語法形式多次用在配置文件中)
public SqlSessionFactory build(Reader reader, Properties properties) {
return build(reader, null, properties);
}
// 通用構(gòu)建函數(shù)-:(1)、(2)、(3)構(gòu)建函數(shù)內(nèi)部實(shí)現(xiàn)均調(diào)用的此函數(shù)
public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
try {
//委托XMLConfigBuilder來解析xml文件,并返回一個(gè)Configuration對象,SqlSessionFactory的生成依賴于此Configuration對象
XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);
return build(parser.parse());
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
reader.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
// (4) 從數(shù)據(jù)流中獲取SqlSessionFactory
public SqlSessionFactory build(InputStream inputStream) {
return build(inputStream, null, null);
}
// (5) 從數(shù)據(jù)流中獲取SqlSessionFactory,并設(shè)定依賴哪種環(huán)境參數(shù)(開發(fā)環(huán)境/生產(chǎn)環(huán)境)
public SqlSessionFactory build(InputStream inputStream, String environment) {
return build(inputStream, environment, null);
}
// (6) 從數(shù)據(jù)流中獲取SqlSessionFactory,并設(shè)定依賴哪些配置參數(shù)(屬性配置文件,那些屬性可以用${propName}語法形式多次用在配置文件中)
public SqlSessionFactory build(InputStream inputStream, Properties properties) {
return build(inputStream, null, properties);
}
// 通用構(gòu)建函數(shù)二:(4)、(5)、(6)構(gòu)建函數(shù)內(nèi)部實(shí)現(xiàn)均調(diào)用此函數(shù)
public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);
return build(parser.parse());
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
inputStream.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
// 通用構(gòu)建函數(shù)一和通用構(gòu)建函數(shù)二最終調(diào)用此函數(shù),將XMLConfigBuilder 產(chǎn)生的Configuration作為參數(shù),并返回DefaultSqlSessionFactory對象
public SqlSessionFactory build(Configuration config) {
return new DefaultSqlSessionFactory(config);
}
}
分享題目:Mybatis源碼[01.SqlSessionFactoryBuilder]
網(wǎng)址分享:http://m.rwnh.cn/article42/igjhhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、全網(wǎng)營銷推廣、網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、網(wǎng)頁設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)