大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

面試題首頁 > Mybaits面試題

Mybaits高級(jí)面試題

001請(qǐng)說說MyBatis的工作原理?

1.讀取 MyBatis 配置文件:mybatis-config.xml 為 MyBatis 的全局配置文件,配置了 MyBatis 的運(yùn)行環(huán)境等信息,例如數(shù)據(jù)庫連接信息。
2.加載映射文件。映射文件即 SQL 映射文件,該文件中配置了操作數(shù)據(jù)庫的 SQL 語句,需要在 MyBatis 配置文件 mybatis-config.xml 中加載。mybatis-config.xml 文件可以加載多個(gè)映射文件,每個(gè)文件對(duì)應(yīng)數(shù)據(jù)庫中的一張表。
3.構(gòu)造會(huì)話工廠:通過 MyBatis 的環(huán)境等配置信息構(gòu)建會(huì)話工廠 SqlSessionFactory。
4.創(chuàng)建會(huì)話對(duì)象:由會(huì)話工廠創(chuàng)建 SqlSession 對(duì)象,該對(duì)象中包含了執(zhí)行 SQL 語句的所有方法。
5.Executor 執(zhí)行器:MyBatis 底層定義了一個(gè) Executor 接口來操作數(shù)據(jù)庫,它將根據(jù) SqlSession 傳遞的參數(shù)動(dòng)態(tài)地生成需要執(zhí)行的 SQL 語句,同時(shí)負(fù)責(zé)查詢緩存的維護(hù)。
6.MappedStatement 對(duì)象:在 Executor 接口的執(zhí)行方法中有一個(gè) MappedStatement 類型的參數(shù),該參數(shù)是對(duì)映射信息的封裝,用于存儲(chǔ)要映射的 SQL 語句的 id、參數(shù)等信息。
7.輸入?yún)?shù)映射:輸入?yún)?shù)類型可以是 Map、List 等集合類型,也可以是基本數(shù)據(jù)類型和 POJO 類型。輸入?yún)?shù)映射過程類似于 JDBC 對(duì) preparedStatement 對(duì)象設(shè)置參數(shù)的過程。
8.輸出結(jié)果映射:輸出結(jié)果類型可以是 Map、 List 等集合類型,也可以是基本數(shù)據(jù)類型和 POJO 類型。輸出結(jié)果映射過程類似于 JDBC 對(duì)結(jié)果集的解析過程。

002MyBatis中重要組件?

1)Configuration:用于描述 MyBatis 主配置文件信息,MyBatis 框架在啟動(dòng)時(shí)會(huì)加載主配置文件,將配置信息轉(zhuǎn)換為 Configuration 對(duì)象。
2)SqlSession:面向用戶的 API,是 MyBatis 與數(shù)據(jù)庫交互的接口。
3)Executor:SQL 執(zhí)行器,用于和數(shù)據(jù)庫交互。SqlSession 可以理解為 Executor 組件的外觀(外觀模式),真正執(zhí)行 SQL 的是 Executor 組件。
4)MappedStatement:用于描述 SQL 配置信息,MyBatis 框架啟動(dòng)時(shí),XML 文件或者注解配置的 SQL信息會(huì)被轉(zhuǎn)換為 MappedStatement 對(duì)象注冊(cè)到 Configuration 組件中。
5)StatementHandler:封裝了對(duì) JDBC 中 Statement 對(duì)象的操作,包括為 Statement 參數(shù)占位符設(shè)置值,通過 Statement 對(duì)象執(zhí)行 SQL語句。
6)TypeHandler:類型處理器,用于 Java 類型與 JDBC 類型之間的轉(zhuǎn)換。
7)ParameterHandler:用于處理 SQL 中的參數(shù)占位符,為參數(shù)占位符設(shè)置值。
8)ResultSetHandler:封裝了對(duì) ResultSet 對(duì)象的處理邏輯,將結(jié)果集轉(zhuǎn)換為 Java 實(shí)體對(duì)象。

003Mybatis 都有哪些 Executor 執(zhí)行器?它們之間的區(qū)別是什么?

Mybatis有三種基本的Executor執(zhí)行器,SimpleExecutor、ReuseExecutor、BatchExecutor。
1)SimpleExecutor:每執(zhí)行一次update或select,就開啟一個(gè)Statement對(duì)象,用完立刻關(guān)閉Statement對(duì)象。
2)ReuseExecutor:執(zhí)行update或select,以sql作為key查找Statement對(duì)象,存在就使用,不存在就創(chuàng)建,用完后,不關(guān)閉Statement對(duì)象,而是放置于Map<String, Statement>內(nèi),供下一次使用。簡(jiǎn)言之,就是重復(fù)使用Statement對(duì)象。
3)BatchExecutor:執(zhí)行update(沒有select,JDBC批處理不支持select),將所有sql都添加到批處理中(addBatch()),等待統(tǒng)一執(zhí)行(executeBatch()),它緩存了多個(gè)Statement對(duì)象,每個(gè)Statement對(duì)象都是addBatch()完畢后,等待逐一執(zhí)行executeBatch()批處理。與JDBC批處理相同。
作用范圍:Executor的這些特點(diǎn),都嚴(yán)格限制在SqlSession生命周期范圍內(nèi)。

004Spring和Mybatis整合之后為什么?級(jí)緩存會(huì)失效?

?級(jí)緩存使?者可以隨時(shí)使?或者銷毀緩存,從SqlSession對(duì)象打開時(shí)緩存就已經(jīng)存在。當(dāng)關(guān)閉SqlSession對(duì)象緩存就失效。當(dāng)與spring整合的時(shí)候,直接跳過SqlSession對(duì)象,?法直接操作到SqlSession對(duì)象,spring在操作SqlSession的時(shí)候,不知道?戶什么時(shí)候關(guān)閉,所以每調(diào)?完?個(gè)dao?法就關(guān)閉了,所以導(dǎo)致?級(jí)緩存失效。
如果開啟了事務(wù),?級(jí)緩存就會(huì)?效,因?yàn)殚_啟了事務(wù),執(zhí)?完dao就不會(huì)銷毀,因?yàn)?旦銷毀,事務(wù)就沒有了,你開啟了事務(wù),Spring就知道你什么時(shí)候需要結(jié)束

目錄

返回頂部
主站蜘蛛池模板: 日本黄色网址免费 | 日本永久免费 | 国产 色| 日韩欧美区 | 久久视频精品线视频在线网站 | 中文国产成人精品久久水 | 久久频这里精品99香蕉久网址 | 黄色影院视频 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 一区二区亚洲精品 | 女十八毛片 | 99九九成人免费视频精品 | 91精品国产免费久久久久久青草 | 欧美另类亚洲一区二区 | 久热这里只精品热在线观看 | 免费观看成人www精品视频在线 | 香蕉视频黄在线观看 | 亚洲在线免费视频 | www.亚洲天堂 | 国产在线精品一区二区不卡 | 日韩中文字幕一区 | 日干夜操 | 台湾佬中文娱乐2222vvv | 在线播放真实国产乱子伦 | 午夜免费一级片 | 色综合久久九月婷婷色综合 | 色婷婷.com | 亚洲成在人线影视天堂网 | 97色精品视频在线观看免费 | 亚洲 欧美 另类中文字幕 | 欧美videos肥婆hd | 久久精品视频日本 | 免费毛片a线观看 | 午夜不卡视频 | 真人一级毛片免费观看视频 | 国产三级黄色录像 | 香蕉一区二区 | 7777奇米影视 | 国产凹凸在线一区二区色老头 | 日韩欧美亚洲综合一区二区 | 亚洲日本视频 |