精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Mybatis核心類SqlSessionFactory,看完我悟了

開發(fā) 前端
SqlSessionFactory 的創(chuàng)建過程就講完了,總的來說就是一個封裝了配置文件的工廠類。那么得到了 SqlSessionFactory 這個工廠對象,接下來干嘛?生產 SqlSession,然后通過 SqlSession 進行數(shù)據(jù)庫的增刪改查操作。

哈嘍,大家好,我是指北君。

請大家搬好小板凳,指北君將會用最通俗易懂,圖文并茂的方式,給大家深入剖析 Mybatis 的實現(xiàn)原理。

本篇文章我們首先解析 SqlSessionFactory 的創(chuàng)建過程。

1、實例代碼

在實例代碼中,我們在測試類中寫了一個 init() 方法,里面包括了 SqlSessionFactory 的構建,分為兩步。

第一步:讀取配置文件 mybatis-config.xml 輸入流

第二步:根據(jù)輸入流構建 SqlSessionFactory;

public void init(){
//定義mybatis全局配置文件
String resource = "mybatis-config.xml";
//加載 mybatis 全局配置文件
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
//構建sqlSession的工廠
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

}

沒什么難的,去掉 try-catch,也就兩行代碼。

InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

是的,那只是你以為的兩行代碼,其實......

話不多說,指北君就來給大家揭秘這冰山下面的東西。

2、代碼剖析

根據(jù)上面的時序圖,我們分析根據(jù)源碼分析每個步驟。

①、獲取配置文件輸入流

InputStream inputStream = Resources.getResourceAsStream("mybatis.config.xml");

這里沒什么好說的,就是獲取配置文件的輸入流。

②、build(in)

這里的 in 就是上一步獲取的輸入流 inputStream。

public SqlSessionFactory build(InputStream inputStream){
return build(inputStream, null, null);
}

在進入到 build 方法:

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(in)

這一段代碼是為了解析我們的配置文件,配置文件是 XML形式 ,我在之前的博客介紹過解析 XML 的幾種方式。

一種是基于樹的結構來解析的稱為DOM;另一種是基于事件流的形式稱為SAX和(StAX)

兩者各有優(yōu)缺點,我這里不做詳細說明,想了解的可以看我之前的文章。

而 Mybatis 使用的是 DOM 形式,并結合 XPath 來解析配置文件。

④、parse()

public Configuration parse(){
if (this.parsed) {
throw new BuilderException("Each XMLConfigBuilder can only be used once.");
} else {
this.parsed = true;
this.parseConfiguration(this.parser.evalNode("/configuration"));
return this.configuration;
}
}

從 /configuration 標簽處開始解析。然后我們進入到 this.parseConfiguration() 方法中:

private void parseConfiguration(XNode root){
try {
this.propertiesElement(root.evalNode("properties"));
Properties settings = this.settingsAsProperties(root.evalNode("settings"));
this.loadCustomVfs(settings);
this.loadCustomLogImpl(settings);
this.typeAliasesElement(root.evalNode("typeAliases"));
this.pluginElement(root.evalNode("plugins"));
this.objectFactoryElement(root.evalNode("objectFactory"));
this.objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));
this.reflectorFactoryElement(root.evalNode("reflectorFactory"));
this.settingsElement(settings);
this.environmentsElement(root.evalNode("environments"));
this.databaseIdProviderElement(root.evalNode("databaseIdProvider"));
this.typeHandlerElement(root.evalNode("typeHandlers"));
this.mapperElement(root.evalNode("mappers"));
} catch (Exception var3) {
throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + var3, var3);
}
}

看到這是不是很熟悉了,這不就是mybatis-config.xml 配置文件里面的各個標簽名嘛,是的,這就是解析該文件,然后全部放在 configuration 對象中。需要注意的是,這里的 configuration 對象不僅包括 mybatis-config.xml 文件內容,也包括 xxxMapper.xml 文件內容。

圖片

⑤、build(configuration)

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

就是去 new 了一個 DefaultSqlSessionFactory 對象,將 configuration 作為參數(shù)。

⑥、DefaultSqlSessionFactory(configuration)

public DefaultSqlSessionFactory(Configuration configuration){
this.configuration = configuration;
}

3、總結

自此,SqlSessionFactory 的創(chuàng)建過程就講完了,總的來說就是一個封裝了配置文件的工廠類。那么得到了 SqlSessionFactory 這個工廠對象,接下來干嘛?生產 SqlSession,然后通過 SqlSession 進行數(shù)據(jù)庫的增刪改查操作。

沒錯,接下來,指北君將給大家介紹 SqlSession 的交互過程,這也是 Mybatis 里面最重要的一個對象。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2020-12-17 08:02:42

MyBatis插件框架

2024-08-05 01:23:41

SQL語句MySQL

2021-08-18 10:30:10

GitHub程序員論文

2020-12-15 08:03:57

Mybatis配置文件

2023-10-31 08:01:48

Mybatis參數(shù)jdbcurl?

2021-06-16 00:57:16

JVM加載機制

2023-03-09 13:39:14

數(shù)據(jù)比賽

2025-02-17 09:22:16

MySQLSQL語句

2021-02-06 09:07:58

字節(jié)跳動消息

2022-08-05 13:03:53

微軟Windows 11

2023-07-29 22:02:06

MyBatis數(shù)據(jù)庫配置

2018-06-08 14:06:02

MVP架構Android

2019-01-23 13:04:09

QLCNAND閃存

2020-03-03 20:04:30

SSD硬盤閃存

2018-03-09 10:02:23

iPhone X下巴蘋果

2013-06-20 11:11:00

程序員經(jīng)理

2024-06-27 09:24:55

2021-11-05 11:10:13

MyBatisSQL查詢

2022-10-20 18:43:32

C語言golang安全
點贊
收藏

51CTO技術棧公眾號

欧美韩日一区二区三区| 欧美aⅴ一区二区三区视频| 精品国产一区久久| 妺妺窝人体色www在线小说| 激情小视频在线观看| 久久精品国产亚洲aⅴ| 久久久亚洲国产| 国产一二三四五区| 999在线精品| 欧美性高清videossexo| 成人小视频在线观看免费| 黄色的视频在线免费观看| 国产一区二区三区美女| 情事1991在线| 91aaa在线观看| 精品国产一级毛片| 亚洲黄色www网站| 国产在线观看中文字幕| 一本大道色婷婷在线| 亚洲视频中文字幕| 日本中文不卡| 少妇人妻精品一区二区三区| 久久精品国产99国产| 2019亚洲日韩新视频| 91在线播放观看| 成人一区二区| 亚洲美女激情视频| av黄色一级片| 亚洲成av人片在线观看www| 欧洲一区在线观看| 国产亚洲综合视频| av电影免费在线看| 一个色综合av| 在线观看免费黄色片| 成人影院免费观看| 国产网站一区二区三区| 蜜桃导航-精品导航| 手机在线观看毛片| 丁香另类激情小说| 97超碰人人看人人| www.国产麻豆| 国产一区欧美二区| 96sao精品视频在线观看| 最好看的日本字幕mv视频大全 | 一本一道久久久a久久久精品91| 日韩三级电影网| 97精品国产露脸对白| 国产日韩欧美一区二区| 亚洲精品久久久久avwww潮水| 韩国欧美一区二区| 91在线中文字幕| av中文字幕第一页| 国产福利精品导航| 高清国产在线一区| 欧美一区二区公司| 99久久婷婷国产| 久99久在线| 日本免费不卡| 国产女人18毛片水真多成人如厕 | 成人在线视频网站| 国产人妻精品一区二区三区| 黄网站免费久久| 亚洲一区中文字幕| 亚洲精品字幕在线| 99国产精品久久久久| 欧美日韩精品一区| 国产日韩精品在线看| 欧美高清在线精品一区| 在线观看日韩羞羞视频| 51xtv成人影院| 亚洲永久精品大片| 欧美韩国日本在线| 粉嫩91精品久久久久久久99蜜桃| 欧美裸体bbwbbwbbw| av地址在线观看| 香蕉一区二区| 中文字幕在线看视频国产欧美在线看完整| 黑人狂躁日本娇小| 欧美日韩国产欧| 国产97色在线| 国产精品爽爽久久| aa级大片欧美| 亚洲国产精品一区二区第四页av| 国产激情视频在线| 精品久久久久久亚洲精品| 无人在线观看的免费高清视频| 亚洲精品555| 日韩精品一区二区三区视频播放| 国产精品无码永久免费不卡| 欧美电影一二区| 久久久久久成人精品| 精品人妻一区二区三区潮喷在线| 狠狠色伊人亚洲综合成人| 国产视频精品网| eeuss影院www在线观看| 夜夜揉揉日日人人青青一国产精品| 日韩av一二三四区| 精品一区二区三区视频在线播放| 亚洲国产中文字幕在线观看| 国产白丝一区二区三区| 伊人影院久久| 成人国内精品久久久久一区| 天堂av资源网| 亚洲天堂精品视频| 国产精品少妇在线视频| 51vv免费精品视频一区二区| 亚洲新中文字幕| 豆国产97在线 | 亚洲| 免费一区二区视频| 精品一区二区日本| 日本三级韩国三级欧美三级| 欧美中文字幕一区二区三区| 亚洲色图欧美另类| 999国产精品| 日韩免费观看视频| 色婷婷中文字幕| 亚洲九九爱视频| 超碰成人在线播放| 国产一区二区电影在线观看| 97精品视频在线| av片免费播放| 综合欧美亚洲日本| 小泽玛利亚视频在线观看| 中文字幕亚洲影视| 国产做受高潮69| 亚洲av无码乱码国产精品久久 | 日韩电影大片中文字幕| 日韩va亚洲va欧美va清高| 日本不卡一区二区三区高清视频| 久久久久无码国产精品一区| 蜜桃传媒在线观看免费进入 | 天天操天天操天天操| 亚洲精品国产a久久久久久| 九九九在线观看视频| 九九久久婷婷| 欧美最猛性xxxxx(亚洲精品)| 欧美 日韩 国产 成人 在线 91| 亚洲色欲色欲www| 久久国产精品国产精品| 精品72久久久久中文字幕| 欧美一级片久久久久久久| 日本人妻丰满熟妇久久久久久| 亚洲综合999| 无码人妻精品一区二区三区99不卡| 一区二区三区午夜探花| 亚洲bt天天射| 欧美aaaaaaa| 亚洲电影免费观看高清完整版在线观看 | 无码国产精品96久久久久| 亚洲国产精品麻豆| 国产一级免费片| 国产免费成人| 欧洲亚洲一区二区三区四区五区| 免费污视频在线一区| 在线日韩日本国产亚洲| 亚洲一区二区影视| 成人免费一区二区三区在线观看| 色男人天堂av| 欧美亚韩一区| 久久久久久久久四区三区| 日本高清不卡一区二区三区视频 | 六月丁香婷婷久久| 在线观看日韩羞羞视频| 亚洲天堂中文字幕在线观看| 久久久伊人欧美| 日韩资源在线| 欧美日韩一区二区在线观看视频 | 国产欧美在线看| gogogogo高清视频在线| 精品国产91九色蝌蚪| 九九精品免费视频| 国产精品久久一级| 国产欧美视频一区| 久久久精品网| 超碰在线免费观看97| 国产成人aa在线观看网站站| 欧洲s码亚洲m码精品一区| yw在线观看| 日韩一区二区三区视频| 精品国产乱码一区二区| 99国产麻豆精品| 亚洲免费黄色网| 亚洲久色影视| 在线不卡日本| 美女主播精品视频一二三四| 国产精品精品视频一区二区三区| 最新国产在线拍揄自揄视频| 日韩av一区二区在线| 中文字幕欧美在线观看| 亚洲午夜一区二区三区| 女人黄色一级片| 国产91精品入口| 91视频免费版污| 黑人一区二区| 台湾成人av| 牛牛影视久久网| 成人网在线免费观看| 蜜桃在线视频| 欧美多人乱p欧美4p久久| 粉嫩av在线播放| 亚洲第一视频网| 国产欧美熟妇另类久久久| 欧美日韩国产在线看| 少妇高潮一区二区三区喷水| 91亚洲大成网污www| 少妇高潮一69aⅹ| 免费观看在线综合| 北条麻妃在线视频观看| 欧美日韩影院| 天天综合五月天| 青青草原综合久久大伊人精品 | yw在线观看| 亚洲精品一区二区三区不| 国产三级精品在线观看| 欧美日韩一级二级| 亚洲天堂av片| 午夜精品一区二区三区免费视频 | 欧美性猛交xxxx黑人猛交| 精品欧美一区二区久久久久| 国产精品视频一二三| 国产中文字幕一区二区| 国产电影精品久久禁18| 亚洲一区二区福利视频| 久久在线精品| 国产肥臀一区二区福利视频| 亚洲精品乱码久久久久久蜜桃麻豆| 中文字幕剧情在线观看一区| 成人写真视频| 色综合久久久久久久久五月| 亚洲系列另类av| 九九九九精品| 日韩电影不卡一区| 精品国产aⅴ麻豆| 欧美成人免费小视频| 成人久久久精品国产乱码一区二区| 欧美裸体一区二区三区| 日本妇乱大交xxxxx| 色女孩综合影院| 男人天堂2024| 色哟哟在线观看一区二区三区| 国产又大又黑又粗免费视频| 亚洲图片有声小说| 日韩网红少妇无码视频香港| 亚洲国产视频一区| 精品无码国产一区二区三区av| 国产精品99精品无码视| 亚洲第一网站在线观看| 亚洲日本国产精品| 欧美一二三区在线| 国产一区二区在线视频观看| 本田岬高潮一区二区三区| 色91精品久久久久久久久| 美国三级日本三级久久99| 少妇激情一区二区三区| 三级一区在线视频先锋| 91av俱乐部| 免费精品视频在线| 国产欧美激情视频| 国产综合成人久久大片91| 日韩av片专区| 国产一区二区三区在线看麻豆| 永久免费黄色片| 成人av资源在线| 91av在线免费| 国产欧美精品区一区二区三区| 国产aaaaaaaaa| 一区二区三区中文字幕精品精品 | 亚洲日本va午夜在线影院| 国产一二三四视频| 亚洲婷婷在线视频| 精品无码一区二区三区电影桃花| 亚洲444eee在线观看| 午夜影院在线看| 91传媒视频在线播放| 国产又粗又猛又爽又黄视频 | youjizz.com日本| 26uuu国产一区二区三区| 黄色免费一级视频| 玉米视频成人免费看| 综合激情网五月| 欧美久久一二三四区| 手机看片国产1024| 中文字幕成人精品久久不卡| 中文字幕有码在线观看| 98视频在线噜噜噜国产| 黑人一区二区三区| 国产伦精品一区二区三| 成人精品久久| 人妻少妇精品久久| 蜜臀av性久久久久蜜臀av麻豆| 中文字幕亚洲日本| 久久久精品综合| 青草草在线视频| 欧美视频日韩视频| 丰满肉肉bbwwbbww| 这里只有精品视频| 国精产品一区一区三区mba下载| 日本三级久久久| 亚洲国产高清在线观看| 欧美一区三区二区在线观看| 欧美成人午夜| wwww.国产| 成人国产一区二区三区精品| 人妻无码一区二区三区免费| 午夜欧美一区二区三区在线播放| 在线免费观看av片| 日韩av一区二区在线| av激情在线| 国产精品美乳在线观看| 老司机精品视频在线播放| 一区二区三区一级片| 美女黄网久久| 中文字幕一区二区人妻电影丶| 亚洲欧洲精品成人久久奇米网| 日韩美一区二区| 亚洲精品一区二区三区四区高清 | 国产探花一区在线观看| 九九热只有这里有精品| 韩国一区二区视频| 在线观看天堂av| 一本在线高清不卡dvd| 免费看日韩av| 美女福利视频一区| 亚洲精品一区二区在线播放∴| 欧美日韩三区四区| 99热免费精品在线观看| 蜜桃视频无码区在线观看| 国产精品进线69影院| 久久人人爽人人爽人人片av免费| 亚洲精品美女久久| 成人超碰在线| 成人av网站观看| 国模大胆一区二区三区| 九九久久久久久| 综合婷婷亚洲小说| 国产美女永久免费| 久久精品这里热有精品| 久久亚洲国产精品尤物| 亚洲精品不卡| 蜜臀va亚洲va欧美va天堂| 成人无码av片在线观看| 色噜噜偷拍精品综合在线| 欧美777四色影视在线| 欧洲亚洲妇女av| 国产videos久久| www.国产区| 国产视频一区二区在线| 欧美a视频在线观看| 亚洲天堂av在线免费观看| 成人软件在线观看| 欧洲国产精品| 美女视频黄久久| 亚洲少妇xxx| 欧美电影免费观看完整版| 黑人玩欧美人三根一起进| 国产麻豆乱码精品一区二区三区| 亚洲天堂激情| 国产精品久久AV无码| 欧美色另类天堂2015| 嫩草研究院在线观看| 国产精品久久久久高潮| 国产精品毛片一区二区在线看| 国产成人美女视频| 一区二区三区四区在线免费观看 | 成人免费网站入口| 99精品1区2区| 中文字幕永久在线观看| 久久九九国产精品怡红院| 亚洲一区二区三区四区电影| 成人一区二区免费视频| 久久久久一区二区三区四区| 中文字幕av免费观看| 欧美www在线| 日韩丝袜视频| 美女在线视频一区二区| 伊人色综合久久天天人手人婷| 天天综合网天天综合| 国产精品电影观看| 亚洲一区色图| 熟妇高潮精品一区二区三区| 在线精品观看国产| 性欧美videoshd高清| 久久人人97超碰人人澡爱香蕉| 蜜桃av一区二区在线观看| 精品一区在线观看视频| 精品中文视频在线| 91精品网站在线观看| 午夜免费福利小电影| 中文字幕精品在线不卡| 亚洲av少妇一区二区在线观看| 欧美中文字幕第一页| 91精品亚洲| 精品人妻一区二区三区香蕉| 欧美日韩国产大片| 欧美三级网站| 韩国黄色一级大片| 国产日本欧美一区二区| 亚洲高清视频网站| 国产日韩在线精品av| 亚洲永久免费|