mybatis 面試題
阿新 • • 發佈:2019-01-09
1.Mybatis比IBatis比較大的幾個改進是什麼
a.有介面繫結,包括註解繫結sql和xml繫結Sql ,
b.動態sql由原來的節點配置變成OGNL表示式,
c. 在一對一,一對多的時候引進了association,在一對多的時候引入了collection
節點,不過都是在resultMap裡面配置
2.什麼是MyBatis的介面繫結,有什麼好處
介面對映就是在IBatis中任意定義介面,然後把接口裡面的方法和SQL語句繫結,
我們直接呼叫介面方法就可以,這樣比起原來了SqlSession提供的方法我們可以有更加靈活的選擇和設定.
3.介面繫結有幾種實現方式,分別是怎麼實現的?
介面繫結有兩種實現方式,一種是通過註解繫結,就是在介面的方法上面加上
@ [email protected]等註解裡面包含Sql語句來繫結,另外一種就是通過xml裡面寫SQL來繫結,
在這種情況下,要指定xml對映檔案裡面的namespace必須為介面的全路徑名.
4.什麼情況下用註解繫結,什麼情況下用xml繫結
當Sql語句比較簡單時候,用註解繫結,
當SQL語句比較複雜時候,用xml繫結,一般用xml繫結的比較多
5.MyBatis實現一對一有幾種方式?具體怎麼操作的
有聯合查詢和巢狀查詢,聯合查詢是幾個表聯合查詢,只查詢一次,
通過在resultMap裡面配置association節點配置一對一的類就可以完成;
巢狀查詢是先查一個表,根據這個表裡面
的結果的外來鍵id,去再另外一個表裡面查詢資料,也是通過association配置,但另外一個表
的查詢通過select屬性配置
6.MyBatis實現一對多有幾種方式,怎麼操作的
有聯合查詢和巢狀查詢,聯合查詢是幾個表聯合查詢,只查詢一次,通過在resultMap裡面配
置collection節點配置一對多的類就可以完成;
巢狀查詢是先查一個表,根據這個表裡面的
結果的外來鍵id,去再另外一個表裡面查詢資料,也是通過配置collection,但另外一個表的
查詢通過select節點配置
7.MyBatis裡面的動態Sql是怎麼設定的?用什麼語法?
MyBatis裡面的動態Sql一般是通過if節點來實現,通過OGNL語法來實現,但是如果要寫的完
整,必須配合where,trim節點,where節點是判斷包含節點有內容就插入where,否則不插
入,trim節點是用來判斷如果動態語句是以and 或or開始,那麼會自動把這個and或者or取
掉
8.IBatis和MyBatis在核心處理類分別叫什麼
IBatis裡面的核心處理類交SqlMapClient,
MyBatis裡面的核心處理類叫做SqlSession
9.IBatis和MyBatis在細節上的不同有哪些
在sql裡面變數命名有原來的#變數# 變成了#{變數}
原來的$變數$變成了${變數},
原來在sql節點裡面的class都換名字交type
原來的queryForObject queryForList 變成了selectOne selectList
原來的別名設定在對映檔案裡面放在了核心配置檔案裡
10.講下MyBatis的快取
MyBatis的快取分為一級快取和二級快取,
一級快取放在session裡面,預設就有,二級快取放在它的名稱空間裡,預設是開啟的,
使用二級快取屬性類需要實現Serializable序列化接
口(可用來儲存物件的狀態),可在它的對映檔案中配置<cache/>
11.MyBatis(IBatis)的好處是什麼
ibatis把sql語句從Java源程式中獨立出來,
放在單獨的XML檔案中編寫,給程式的維護帶來了很大便利。
ibatis封裝了底層JDBC API的呼叫細節,並能自動將結果集轉換成Java Bean物件,
大大簡化了Java資料庫程式設計的重複工作。
因為Ibatis需要程式設計師自己去編寫sql語句,
程式設計師可以結合資料庫自身的特點靈活控制sql語句,
因此能夠實現比hibernate等全自動orm框架更高的查詢效率,能夠完成複雜查詢。.
a.有介面繫結,包括註解繫結sql和xml繫結Sql ,
b.動態sql由原來的節點配置變成OGNL表示式,
c. 在一對一,一對多的時候引進了association,在一對多的時候引入了collection
節點,不過都是在resultMap裡面配置
2.什麼是MyBatis的介面繫結,有什麼好處
介面對映就是在IBatis中任意定義介面,然後把接口裡面的方法和SQL語句繫結,
我們直接呼叫介面方法就可以,這樣比起原來了SqlSession提供的方法我們可以有更加靈活的選擇和設定.
3.介面繫結有幾種實現方式,分別是怎麼實現的?
介面繫結有兩種實現方式,一種是通過註解繫結,就是在介面的方法上面加上
@
在這種情況下,要指定xml對映檔案裡面的namespace必須為介面的全路徑名.
4.什麼情況下用註解繫結,什麼情況下用xml繫結
當Sql語句比較簡單時候,用註解繫結,
當SQL語句比較複雜時候,用xml繫結,一般用xml繫結的比較多
5.MyBatis實現一對一有幾種方式?具體怎麼操作的
有聯合查詢和巢狀查詢,聯合查詢是幾個表聯合查詢,只查詢一次,
通過在resultMap裡面配置association節點配置一對一的類就可以完成;
巢狀查詢是先查一個表,根據這個表裡面
的結果的外來鍵id,去再另外一個表裡面查詢資料,也是通過association配置,但另外一個表
的查詢通過select屬性配置
6.MyBatis實現一對多有幾種方式,怎麼操作的
有聯合查詢和巢狀查詢,聯合查詢是幾個表聯合查詢,只查詢一次,通過在resultMap裡面配
置collection節點配置一對多的類就可以完成;
巢狀查詢是先查一個表,根據這個表裡面的
結果的外來鍵id,去再另外一個表裡面查詢資料,也是通過配置collection,但另外一個表的
查詢通過select節點配置
7.MyBatis裡面的動態Sql是怎麼設定的?用什麼語法?
MyBatis裡面的動態Sql一般是通過if節點來實現,通過OGNL語法來實現,但是如果要寫的完
整,必須配合where,trim節點,where節點是判斷包含節點有內容就插入where,否則不插
入,trim節點是用來判斷如果動態語句是以and 或or開始,那麼會自動把這個and或者or取
掉
8.IBatis和MyBatis在核心處理類分別叫什麼
IBatis裡面的核心處理類交SqlMapClient,
MyBatis裡面的核心處理類叫做SqlSession
9.IBatis和MyBatis在細節上的不同有哪些
在sql裡面變數命名有原來的#變數# 變成了#{變數}
原來的$變數$變成了${變數},
原來在sql節點裡面的class都換名字交type
原來的queryForObject queryForList 變成了selectOne selectList
原來的別名設定在對映檔案裡面放在了核心配置檔案裡
10.講下MyBatis的快取
MyBatis的快取分為一級快取和二級快取,
一級快取放在session裡面,預設就有,二級快取放在它的名稱空間裡,預設是開啟的,
使用二級快取屬性類需要實現Serializable序列化接
口(可用來儲存物件的狀態),可在它的對映檔案中配置<cache/>
11.MyBatis(IBatis)的好處是什麼
ibatis把sql語句從Java源程式中獨立出來,
放在單獨的XML檔案中編寫,給程式的維護帶來了很大便利。
ibatis封裝了底層JDBC API的呼叫細節,並能自動將結果集轉換成Java Bean物件,
大大簡化了Java資料庫程式設計的重複工作。
因為Ibatis需要程式設計師自己去編寫sql語句,
程式設計師可以結合資料庫自身的特點靈活控制sql語句,
因此能夠實現比hibernate等全自動orm框架更高的查詢效率,能夠完成複雜查詢。.