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