黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

面試題首頁 > Mybaits面試題

Mybaits高級面試題

001請說說MyBatis的工作原理?

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

002MyBatis中重要組件?

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

003Mybatis 都有哪些 Executor 執行器?它們之間的區別是什么?

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

004Spring和Mybatis整合之后為什么?級緩存會失效?

?級緩存使?者可以隨時使?或者銷毀緩存,從SqlSession對象打開時緩存就已經存在。當關閉SqlSession對象緩存就失效。當與spring整合的時候,直接跳過SqlSession對象,?法直接操作到SqlSession對象,spring在操作SqlSession的時候,不知道?戶什么時候關閉,所以每調?完?個dao?法就關閉了,所以導致?級緩存失效。
如果開啟了事務,?級緩存就會?效,因為開啟了事務,執?完dao就不會銷毀,因為?旦銷毀,事務就沒有了,你開啟了事務,Spring就知道你什么時候需要結束

目錄

返回頂部
主站蜘蛛池模板: 天天爱天天色天天干 | 丁香婷婷激情网 | 久久高清精品 | 色综合天天综合高清网国产 | 国产成人a∨麻豆精品 | 人人爽视频 | 天天干天天天天 | 欧美一级专区免费大片俄罗斯 | 动漫精品成人免费网站 | 久草中文在线观看 | 欧美日韩一区二区三区高清不卡 | 黄色片免费观看网站 | 亚洲精品午夜在线观看 | 精品三区| 国产成人高清亚洲一区91 | 亚洲欧美人成人综合在线50p | 日韩国产欧美在线观看 | sao虎视频在线精品永久 | 未成18年禁止观看的免费 | 亚洲国产成人久久77 | 狠狠操免费视频 | 亚洲日本在线看片 | 欧美日皮 | 黑人videosex中国另类 | 日韩深夜 | 日韩在线看片 | 999久久久免费精品国产牛牛 | 一区二区三区亚洲视频 | 国产色视频网站免费观看 | 又黄又爽又色的视频 | 色播五月激情五月 | 亚洲第1页| 色噜噜狠狠色综合免费视频 | 一本大道香蕉中文在线高清 | 成人理论片 | 一个人看的视频免费观看www | 天天舔天天操天天干 | 日本黄色免费网址 | 97国产精品国产品国语字幕 | 欧美成人a大片 | 插深点视频 |