麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Mybatis源碼解析(一)(2015年06月11日)

2019-11-15 00:33:39
字體:
來源:轉載
供稿:網友
Mybatis源碼解析(一)(2015年06月11日)

一、簡介

先看看Mybatis的源碼結構圖,Mybatis3.2.7版本包含的包共計19個,其他版本可能會少。

clipboard

每個基于 MyBatis 的應用都是以一個 SqlsessionFactory 的實例為中心的,SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得,而 SqlSessionFactoryBuilder 則可以從 xml 配置文件或一個預先定制的 Configuration 的實例構建出 SqlSessionFactory 的實例。獲取SqlSessionFactory 之后便可以獲取SqlSession,SqlSession中包含了一系列操作數據庫的增刪查改的方法。

所以Mybatis的三個重要核心就是:SqlSessionFactoryBuilder 、SqlSessionFactory 、SqlSession

二、源碼解析

1、SqlSessionFactoryBuilder

SqlSessionFactoryBuilder 、SqlSessionFactory 、SqlSession這三個類都位于session包下,這是SqlSessionFactoryBuilder類結構圖

clipboard[1]

類中的9個build方法都是為了創建并返回SqlSessionFactory對象,根據參數類型,實際上可以分為三類方法

1.以Configuration對象為參數的創建

2.以InputStream對象為參數的創建

3.以Reader對象為參數的創建

但實際上最重要的是以Configuration對象的build方法,因為以InputStream、Reader對象為參數的build方法最后都是通過讀取xml配置文件,創建Configuration對象,并調用以Configuration對象為參數的build方法,最終返回DefaultSqlSessionFactory對象,以下是源碼

public SqlSessionFactory build(Reader reader, String environment, PRoperties properties) {    SqlSessionFactory var5;    try {        XMLConfigBuilder e = new XMLConfigBuilder(reader, environment, properties);        var5 = this.build((Configuration)e.parse());    } catch (Exception var14) {        throw ExceptionFactory.wrapException("Error building SqlSession.", var14);    } finally {        ErrorContext.instance().reset();        try {            reader.close();        } catch (IOException var13) {            ;        }    }    return var5;}
public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {    SqlSessionFactory var5;    try {        XMLConfigBuilder e = new XMLConfigBuilder(inputStream, environment, properties);        var5 = this.build((Configuration)e.parse());    } catch (Exception var14) {        throw ExceptionFactory.wrapException("Error building SqlSession.", var14);    } finally {        ErrorContext.instance().reset();        try {            inputStream.close();        } catch (IOException var13) {            ;        }    }    return var5;}
public SqlSessionFactory build(Configuration config) {    return new DefaultSqlSessionFactory(config);}

2、SqlSessionFactory

SqlSessionFactory是一個接口,其實真實干活的事它的實現類DefaultSqlSessionFactory,SqlSessionFactory顧名思義它是一個SqlSession的工廠類,其作用主要也是向外提供SqlSession,還有一個作用就是可以獲取Configuration對象

public interface SqlSessionFactory {    SqlSession openSession();    SqlSession openSession(boolean var1);    SqlSession openSession(Connection var1);    SqlSession openSession(TransactionIsolationLevel var1);    SqlSession openSession(ExecutorType var1);    SqlSession openSession(ExecutorType var1, boolean var2);    SqlSession openSession(ExecutorType var1, TransactionIsolationLevel var2);    SqlSession openSession(ExecutorType var1, Connection var2);    Configuration getConfiguration();}

提供8中獲取SqlSession的方法,涉及的參數主要有:自定義連接、事物隔離級別、ExecutorType(Statement類型【普通、預處理、批處理】)

這里需要注意的是openSession方法不是默認自動提交事物的。

3、SqlSession

SqlSession同樣是一個接口,實際干活的也是它的實現類DefaultSqlSession,這是它的類結構圖

clipboard[2]

從圖中我們可以看出,SqlSession的作用主要是提供數據庫的一些基本操作。


上一篇:java中的遞歸方法

下一篇:SSH免登陸

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: va毛片| 日韩视频一区二区三区四区 | 精品av在线播放 | 国产a级片电影 | 日日草夜夜操 | 亚洲欧美国产视频 | 日韩欧美激情视频 | 久久中文免费 | 狠狠一区 | 久草手机在线视频 | 国产中文av在线 | 欧美精品激情视频 | 美女黄视频在线观看 | 欧美成人做爰高潮片免费视频 | 羞羞答答xxdd在线播放 | www.guochanav.com | 成人激情视频网站 | 日本在线播放一区二区三区 | 性爱视频在线免费 | 一级做a爱性色毛片免费1 | 日韩午夜一区二区三区 | 国产一区二区三区手机在线 | 综合网天天色 | 成人毛片视频免费 | 中文字幕视频在线播放 | 日韩黄在线观看 | 国产一有一级毛片视频 | 视频在线色 | 色欲香天天天综合网站 | 精品国产一区二区三区久久久蜜月 | 久久99国产伦子精品免费 | 国产精品成人亚洲一区二区 | 4p嗯啊巨肉寝室调教男男视频 | 激情小说另类 | 欧美黄色大片免费观看 | 久久亚洲成人 | 日日摸夜夜添夜夜添牛牛 | 国产91精品亚洲精品日韩已满 | 欧美日韩在线播放一区 | 猫咪av在线 | 精品国产一区二区久久 |