mybatis面試題
mybatis僅有基本的字段映射,對(duì)象數(shù)據(jù)以及對(duì)象實(shí)際關(guān)系仍然需要通過(guò)手寫(xiě)sql來(lái)實(shí)現(xiàn)和管理。如下是中國(guó)人才網(wǎng)給大家整理的mybatis面試題,希望對(duì)大家有所作用。
1.Mybatis比IBatis比較大的幾個(gè)改進(jìn)是什么
a.有接口綁定,包括注解綁定sql和xml綁定Sql ,b.動(dòng)態(tài)sql由原來(lái)的節(jié)點(diǎn)配置變成OGNL表達(dá)式,c. 在一對(duì)一,一對(duì)多的時(shí)候引進(jìn)了association,在一對(duì)多的時(shí)候引入了collection節(jié)點(diǎn),不過(guò)都是在resultMap里面配置
2.什么是MyBatis的接口綁定,有什么好處
接口映射就是在IBatis中任意定義接口,然后把接口里面的方法和SQL語(yǔ)句綁定,我們直接調(diào)用接口方法就可以,這樣比起原來(lái)了SqlSession提供的方法我們可以有更加靈活的選擇和設(shè)置.
3.接口綁定有幾種實(shí)現(xiàn)方式,分別是怎么實(shí)現(xiàn)的?
接口綁定有兩種實(shí)現(xiàn)方式,一種是通過(guò)注解綁定,就是在接口的'方法上面加上@Select@Update等注解里面包含Sql語(yǔ)句來(lái)綁定,另外一種就是通過(guò)xml里面寫(xiě)SQL來(lái)綁定,在這種情況下,要指定xml映射文件里面的namespace必須為接口的全路徑名.
4.什么情況下用注解綁定,什么情況下用xml綁定
當(dāng)Sql語(yǔ)句比較簡(jiǎn)單時(shí)候,用注解綁定,當(dāng)SQL語(yǔ)句比較復(fù)雜時(shí)候,用xml綁定,一般用xml綁定的比較多
5.MyBatis實(shí)現(xiàn)一對(duì)一有幾種方式?具體怎么操作的
有聯(lián)合查詢(xún)和嵌套查詢(xún),聯(lián)合查詢(xún)是幾個(gè)表聯(lián)合查詢(xún),只查詢(xún)一次,通過(guò)在resultMap里面配置association節(jié)點(diǎn)配置一對(duì)一的類(lèi)就可以完成;嵌套查詢(xún)是先查一個(gè)表,根據(jù)這個(gè)表里面的結(jié)果的外鍵id,去再另外一個(gè)表里面查詢(xún)數(shù)據(jù),也是通過(guò)association配置,但另外一個(gè)表的查詢(xún)通過(guò)select屬性配置
6.MyBatis實(shí)現(xiàn)一對(duì)多有幾種方式,怎么操作的
有聯(lián)合查詢(xún)和嵌套查詢(xún),聯(lián)合查詢(xún)是幾個(gè)表聯(lián)合查詢(xún),只查詢(xún)一次,通過(guò)在resultMap里面配置collection節(jié)點(diǎn)配置一對(duì)多的類(lèi)就可以完成;嵌套查詢(xún)是先查一個(gè)表,根據(jù)這個(gè)表里面的結(jié)果的外鍵id,去再另外一個(gè)表里面查詢(xún)數(shù)據(jù),也是通過(guò)配置collection,但另外一個(gè)表的查詢(xún)通過(guò)select節(jié)點(diǎn)配置
7.MyBatis里面的動(dòng)態(tài)Sql是怎么設(shè)定的?用什么語(yǔ)法?
MyBatis里面的動(dòng)態(tài)Sql一般是通過(guò)if節(jié)點(diǎn)來(lái)實(shí)現(xiàn),通過(guò)OGNL語(yǔ)法來(lái)實(shí)現(xiàn),但是如果要寫(xiě)的完整,必須配合where,trim節(jié)點(diǎn),where節(jié)點(diǎn)是判斷包含節(jié)點(diǎn)有內(nèi)容就插入where,否則不插入,trim節(jié)點(diǎn)是用來(lái)判斷如果動(dòng)態(tài)語(yǔ)句是以and 或or開(kāi)始,那么會(huì)自動(dòng)把這個(gè)and或者or取掉
8.IBatis和MyBatis在核心處理類(lèi)分別叫什么
IBatis里面的核心處理類(lèi)交SqlMapClient,MyBatis里面的核心處理類(lèi)叫做SqlSession
9.IBatis和MyBatis在細(xì)節(jié)上的不同有哪些
在sql里面變量命名有原來(lái)的#變量# 變成了#{變量}原來(lái)的$變量$變成了${變量},原來(lái)在sql節(jié)點(diǎn)里面的class都換名字交type原來(lái)的queryForObject queryForList 變成了selectOne selectList原來(lái)的別名設(shè)置在映射文件里面放在了核心配置文件里
10.講下MyBatis的緩存
MyBatis的緩存分為一級(jí)緩存和二級(jí)緩存,一級(jí)緩存放在session里面,默認(rèn)就有,二級(jí)緩存放在它的命名空間里,默認(rèn)是打開(kāi)的,使用二級(jí)緩存屬性類(lèi)需要實(shí)現(xiàn)Serializable序列化接口(可用來(lái)保存對(duì)象的狀態(tài)),可在它的映射文件中配置
11.MyBatis(IBatis)的好處是什么
ibatis把sql語(yǔ)句從Java源程序中獨(dú)立出來(lái),放在單獨(dú)的XML文件中編寫(xiě),給程序的維護(hù)帶來(lái)了很大便利。
ibatis封裝了底層JDBC API的調(diào)用細(xì)節(jié),并能自動(dòng)將結(jié)果集轉(zhuǎn)換成Java Bean對(duì)象,大大簡(jiǎn)化了Java數(shù)據(jù)庫(kù)編程的重復(fù)工作。
【mybatis面試題】相關(guān)文章:
經(jīng)典面試題02-11
java面試題01-31
.net面試題01-31
微軟面試題01-31
Eclipse面試題02-21
電信面試題01-05
IBM經(jīng)典面試題01-27
IBM面試題精選12-25
情景面試題01-27