36道MyBatis面試專題,offer在向你招手

1利诺、什么是 MyBatis富蓄?

答:MyBatis 是一個(gè)可以自定義 SQL、存儲(chǔ)過(guò)程和高級(jí)映射的持久層框架慢逾。

2立倍、講下 MyBatis 的緩存

答:MyBatis 的緩存分為一級(jí)緩存和二級(jí)緩存,一級(jí)緩存放在 session 里面,默認(rèn)就有,二級(jí)緩
存放在它的命名空間里,默認(rèn)是不打開(kāi)的,使用二級(jí)緩存屬性類需要實(shí)現(xiàn) Serializable 序列化
接口(可用來(lái)保存對(duì)象的狀態(tài)),可在它的映射文件中配置<cache/>

3灭红、Mybatis 是如何進(jìn)行分頁(yè)的?分頁(yè)插件的原理是什么口注?

答:
1)Mybatis 使用 RowBounds 對(duì)象進(jìn)行分頁(yè)变擒,也可以直接編寫(xiě) sql 實(shí)現(xiàn)分頁(yè),也可以使用
Mybatis 的分頁(yè)插件疆导。
2)分頁(yè)插件的原理:實(shí)現(xiàn) Mybatis 提供的接口赁项,實(shí)現(xiàn)自定義插件,在插件的攔截方法內(nèi)攔
截待執(zhí)行的 sql澈段,然后重寫(xiě) sql悠菜。
舉例:select * from student,攔截 sql 后重寫(xiě)為:select t.* from (select * from student)t
limit 0败富,10

4悔醋、簡(jiǎn)述 Mybatis 的插件運(yùn)行原理,以及如何編寫(xiě)一個(gè)插件兽叮?

答:
1)Mybatis 僅可以編寫(xiě)針對(duì) ParameterHandler芬骄、ResultSetHandler、StatementHandler鹦聪、
Executor 這 4 種接口的插件账阻,Mybatis 通過(guò)動(dòng)態(tài)代理,為需要攔截的接口生成代理對(duì)象以實(shí)
現(xiàn)接口方法攔截功能泽本,每當(dāng)執(zhí)行這 4 種接口對(duì)象的方法時(shí)淘太,就會(huì)進(jìn)入攔截方法,具體就是
InvocationHandler 的 invoke()方法规丽,當(dāng)然蒲牧,只會(huì)攔截那些你指定需要攔截的方法。
2)實(shí)現(xiàn) Mybatis 的 Interceptor 接口并復(fù)寫(xiě) intercept()方法赌莺,然后在給插件編寫(xiě)注解冰抢,指定
要攔截哪一個(gè)接口的哪些方法即可,記住艘狭,別忘了在配置文件中配置你編寫(xiě)的插件挎扰。

5、Mybatis 動(dòng)態(tài) sql 是做什么的巢音?都有哪些動(dòng)態(tài) sql遵倦?能簡(jiǎn)述一下動(dòng)態(tài) sql 的執(zhí)行原理不?

答:
1)Mybatis 動(dòng)態(tài) sql 可以讓我們?cè)?Xml 映射文件內(nèi)港谊,以標(biāo)簽的形式編寫(xiě)動(dòng)態(tài) sql,完成邏輯
判斷和動(dòng)態(tài)拼接 sql 的功能橙弱。
2)Mybatis 提供了 9 種動(dòng)態(tài) sql 標(biāo)簽:
trim|where|set|foreach|if|choose|when|otherwise|bind歧寺。 3)其執(zhí)行原理為燥狰,使用 OGNL 從 sql 參數(shù)對(duì)象中計(jì)算表達(dá)式的值,根據(jù)表達(dá)式的值動(dòng)態(tài)拼
接 sql斜筐,以此來(lái)完成動(dòng)態(tài) sql 的功能龙致。

6、#{}和${}的區(qū)別是什么顷链?

答:
1)#{}是預(yù)編譯處理目代,{}是字符串替換。 2)Mybatis 在處理#{}時(shí)嗤练,會(huì)將 sql 中的#{}替換為?號(hào)榛了,調(diào)用 PreparedStatement 的 set 方法 來(lái)賦值; 3)Mybatis 在處理{}時(shí)煞抬,就是把${}替換成變量的值霜大。
4)使用#{}可以有效的防止 SQL 注入,提高系統(tǒng)安全性革答。

7战坤、為什么說(shuō) Mybatis 是半自動(dòng) ORM 映射工具?它與全自動(dòng)的區(qū)別在哪里残拐?

答:Hibernate 屬于全自動(dòng) ORM 映射工具途茫,使用 Hibernate 查詢關(guān)聯(lián)對(duì)象或者關(guān)聯(lián)集合對(duì)象
時(shí),可以根據(jù)對(duì)象關(guān)系模型直接獲取溪食,所以它是全自動(dòng)的囊卜。而 Mybatis 在查詢關(guān)聯(lián)對(duì)象或
關(guān)聯(lián)集合對(duì)象時(shí),需要手動(dòng)編寫(xiě) sql 來(lái)完成眠菇,所以边败,稱之為半自動(dòng) ORM 映射工具。

8捎废、Mybatis 是否支持延遲加載笑窜?如果支持,它的實(shí)現(xiàn)原理是什么登疗?

答:
1)Mybatis 僅支持 association 關(guān)聯(lián)對(duì)象和 collection 關(guān)聯(lián)集合對(duì)象的延遲加載排截,association
指的就是一對(duì)一,collection 指的就是一對(duì)多查詢辐益。在 Mybatis 配置文件中断傲,可以配置是否
啟用延遲加載 lazyLoadingEnabled=true|false。 2)它的原理是智政,使用 CGLIB 創(chuàng)建目標(biāo)對(duì)象的代理對(duì)象认罩,當(dāng)調(diào)用目標(biāo)方法時(shí),進(jìn)入攔截器方
法续捂,比如調(diào)用 a.getB().getName()垦垂,攔截器 invoke()方法發(fā)現(xiàn) a.getB()是 null 值宦搬,那么就會(huì)單
獨(dú)發(fā)送事先保存好的查詢關(guān)聯(lián) B 對(duì)象的 sql,把 B 查詢上來(lái)劫拗,然后調(diào)用 a.setB(b)间校,于是 a 的
對(duì)象 b 屬性就有值了,接著完成 a.getB().getName()方法的調(diào)用页慷。這就是延遲加載的基本原
理憔足。

9、MyBatis 與 Hibernate 有哪些不同酒繁?

答:
1)Mybatis 和 hibernate 不同滓彰,它不完全是一個(gè) ORM 框架,因?yàn)?MyBatis 需要程序員自己
編寫(xiě) Sql 語(yǔ)句欲逃,不過(guò) mybatis 可以通過(guò) XML 或注解方式靈活配置要運(yùn)行的 sql 語(yǔ)句找蜜,并將
java 對(duì)象和 sql 語(yǔ)句映射生成最終執(zhí)行的 sql,最后將 sql 執(zhí)行的結(jié)果再映射生成 java 對(duì)
象稳析。
2)Mybatis 學(xué)習(xí)門(mén)檻低洗做,簡(jiǎn)單易學(xué),程序員直接編寫(xiě)原生態(tài) sql彰居,可嚴(yán)格控制 sql 執(zhí)行性
能诚纸,靈活度高,非常適合對(duì)關(guān)系數(shù)據(jù)模型要求不高的軟件開(kāi)發(fā)陈惰,例如互聯(lián)網(wǎng)軟件畦徘、企業(yè)運(yùn)
營(yíng)類軟件等,因?yàn)檫@類軟件需求變化頻繁抬闯,一但需求變化要求成果輸出迅速井辆。但是靈活的
前提是 mybatis 無(wú)法做到數(shù)據(jù)庫(kù)無(wú)關(guān)性,如果需要實(shí)現(xiàn)支持多種數(shù)據(jù)庫(kù)的軟件則需要自定
義多套 sql 映射文件溶握,工作量大杯缺。
3)Hibernate 對(duì)象/關(guān)系映射能力強(qiáng),數(shù)據(jù)庫(kù)無(wú)關(guān)性好睡榆,對(duì)于關(guān)系模型要求高的軟件(例如
需求固定的定制化軟件)如果用 hibernate 開(kāi)發(fā)可以節(jié)省很多代碼萍肆,提高效率。但是
Hibernate 的缺點(diǎn)是學(xué)習(xí)門(mén)檻高胀屿,要精通門(mén)檻更高塘揣,而且怎么設(shè)計(jì) O/R 映射,在性能和對(duì)象
模型之間如何權(quán)衡宿崭,以及怎樣用好 Hibernate 需要具有很強(qiáng)的經(jīng)驗(yàn)和能力才行亲铡。
總之,按照用戶的需求在有限的資源環(huán)境下只要能做出維護(hù)性、擴(kuò)展性良好的軟件架構(gòu)都
是好架構(gòu)奖蔓,所以框架只有適合才是最好琅摩。

10、MyBatis 的好處是什么锭硼?

答:
1)MyBatis 把 sql 語(yǔ)句從 Java 源程序中獨(dú)立出來(lái),放在單獨(dú)的 XML 文件中編寫(xiě)蜕劝,給程序的
維護(hù)帶來(lái)了很大便利檀头。
2)MyBatis 封裝了底層 JDBC API 的調(diào)用細(xì)節(jié),并能自動(dòng)將結(jié)果集轉(zhuǎn)換成 Java Bean 對(duì)象岖沛,
大大簡(jiǎn)化了 Java 數(shù)據(jù)庫(kù)編程的重復(fù)工作暑始。
3)因?yàn)?MyBatis 需要程序員自己去編寫(xiě) sql 語(yǔ)句,程序員可以結(jié)合數(shù)據(jù)庫(kù)自身的特點(diǎn)靈活
控制 sql 語(yǔ)句婴削,因此能夠?qū)崿F(xiàn)比 Hibernate 等全自動(dòng) orm 框架更高的查詢效率廊镜,能夠完成復(fù)
雜查詢。

11唉俗、簡(jiǎn)述 Mybatis 的 Xml 映射文件和 Mybatis 內(nèi)部數(shù)據(jù)結(jié)構(gòu)之間的映射關(guān)系嗤朴?

答:Mybatis 將所有 Xml 配置信息都封裝到 All-In-One 重量級(jí)對(duì)象 Configuration 內(nèi)部。在
Xml 映射文件中虫溜,<parameterMap>標(biāo)簽會(huì)被解析為 ParameterMap 對(duì)象雹姊,其每個(gè)子元素會(huì)
被解析為 ParameterMapping 對(duì)象。<resultMap>標(biāo)簽會(huì)被解析為 ResultMap 對(duì)象衡楞,其每個(gè)子
元素會(huì)被解析為 ResultMapping 對(duì)象吱雏。每一個(gè)<select>、<insert>瘾境、<update>歧杏、<delete>標(biāo)簽
均會(huì)被解析為 MappedStatement 對(duì)象,標(biāo)簽內(nèi)的 sql 會(huì)被解析為 BoundSql 對(duì)象迷守。

12犬绒、什么是 MyBatis 的接口綁定,有什么好處?

答:接口映射就是在 MyBatis 中任意定義接口,然后把接口里面的方法和 SQL 語(yǔ)句綁定,我們
直接調(diào)用接口方法就可以,這樣比起原來(lái)了 SqlSession 提供的方法我們可以有更加靈活的選
擇和設(shè)置.

13盒犹、接口綁定有幾種實(shí)現(xiàn)方式,分別是怎么實(shí)現(xiàn)的?

答:接口綁定有兩種實(shí)現(xiàn)方式,一種是通過(guò)注解綁定,就是在接口的方法上面加上
@Select@Update 等注解里面包含 Sql 語(yǔ)句來(lái)綁定,另外一種就是通過(guò) xml 里面寫(xiě) SQL 來(lái)綁
定,在這種情況下,要指定 xml 映射文件里面的 namespace 必須為接口的全路徑名.

14懂更、什么情況下用注解綁定,什么情況下用 xml 綁定?

答:當(dāng) Sql 語(yǔ)句比較簡(jiǎn)單時(shí)候,用注解綁定急膀;當(dāng) SQL 語(yǔ)句比較復(fù)雜時(shí)候,用 xml 綁定,一般用
xml 綁定的比較多

15沮协、MyBatis 實(shí)現(xiàn)一對(duì)一有幾種方式?具體怎么操作的?

答:有聯(lián)合查詢和嵌套查詢,聯(lián)合查詢是幾個(gè)表聯(lián)合查詢,只查詢一次,通過(guò)在 resultMap 里面
配置 association 節(jié)點(diǎn)配置一對(duì)一的類就可以完成;嵌套查詢是先查一個(gè)表,根據(jù)這個(gè)表里面
的結(jié)果的外鍵 id,去再另外一個(gè)表里面查詢數(shù)據(jù),也是通過(guò) association 配置,但另外一個(gè)表的
查詢通過(guò) select 屬性配置卓嫂。

16慷暂、Mybatis 能執(zhí)行一對(duì)一、一對(duì)多的關(guān)聯(lián)查詢嗎?都有哪些實(shí)現(xiàn)方式行瑞,以及它們之間的區(qū)

別奸腺?
答:能,Mybatis 不僅可以執(zhí)行一對(duì)一血久、一對(duì)多的關(guān)聯(lián)查詢突照,還可以執(zhí)行多對(duì)一,多對(duì)多的
關(guān)聯(lián)查詢氧吐,多對(duì)一查詢讹蘑,其實(shí)就是一對(duì)一查詢,只需要把 selectOne()修改為 selectList()即
可筑舅;多對(duì)多查詢座慰,其實(shí)就是一對(duì)多查詢,只需要把 selectOne()修改為 selectList()即可翠拣。
關(guān)聯(lián)對(duì)象查詢版仔,有兩種實(shí)現(xiàn)方式,一種是單獨(dú)發(fā)送一個(gè) sql 去查詢關(guān)聯(lián)對(duì)象误墓,賦給主對(duì)
象婴氮,然后返回主對(duì)象茅姜。另一種是使用嵌套查詢,嵌套查詢的含義為使用 join 查詢,一部分
列是 A 對(duì)象的屬性值窘行,另外一部分列是關(guān)聯(lián)對(duì)象 B 的屬性值盹牧,好處是只發(fā)一個(gè) sql 查詢加派,
就可以把主對(duì)象和其關(guān)聯(lián)對(duì)象查出來(lái)熟尉。

17、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
取掉熙卡。

18杖刷、Mybatis 是如何將 sql 執(zhí)行結(jié)果封裝為目標(biāo)對(duì)象并返回的?都有哪些映射形式驳癌?

答:
第一種是使用<resultMap>標(biāo)簽滑燃,逐一定義列名和對(duì)象屬性名之間的映射關(guān)系。
第二種是使用 sql 列的別名功能颓鲜,將列別名書(shū)寫(xiě)為對(duì)象屬性名表窘,比如 T_NAME AS NAME,對(duì)
象屬性名一般是 name甜滨,小寫(xiě)乐严,但是列名不區(qū)分大小寫(xiě),Mybatis 會(huì)忽略列名大小寫(xiě)衣摩,智能
找到與之對(duì)應(yīng)對(duì)象屬性名昂验,你甚至可以寫(xiě)成 T_NAME AS NaMe,Mybatis 一樣可以正常工
作。
有了列名與屬性名的映射關(guān)系后既琴,Mybatis 通過(guò)反射創(chuàng)建對(duì)象占婉,同時(shí)使用反射給對(duì)象的屬性
逐一賦值并返回,那些找不到映射關(guān)系的屬性甫恩,是無(wú)法完成賦值的逆济。

19、Xml 映射文件中磺箕,除了常見(jiàn)的 select|insert|updae|delete 標(biāo)簽之外纹腌,還有哪些標(biāo)簽?

答:還有很多其他的標(biāo)簽滞磺,<resultMap>、<parameterMap>莱褒、<sql>击困、<include>、
<selectKey>广凸,加上動(dòng)態(tài) sql 的 9 個(gè)標(biāo)簽阅茶,
trim|where|set|foreach|if|choose|when|otherwise|bind 等,其中<sql>為 sql 片段標(biāo)簽谅海,通
過(guò)<include>標(biāo)簽引入 sql 片段脸哀,<selectKey>為不支持自增的主鍵生成策略標(biāo)簽。

20扭吁、當(dāng)實(shí)體類中的屬性名和表中的字段名不一樣撞蜂,如果將查詢的結(jié)果封裝到指定 pojo?

答:
1)通過(guò)在查詢的 sql 語(yǔ)句中定義字段名的別名侥袜。
2)通過(guò)<resultMap>來(lái)映射字段名和實(shí)體類屬性名的一一對(duì)應(yīng)的關(guān)系蝌诡。

21、模糊查詢 like 語(yǔ)句該怎么寫(xiě)

答:
1)在 java 中拼接通配符枫吧,通過(guò)#{}賦值
2)在 Sql 語(yǔ)句中拼接通配符 (不安全 會(huì)引起 Sql 注入)

22浦旱、通常一個(gè) Xml 映射文件,都會(huì)寫(xiě)一個(gè) Dao 接口與之對(duì)應(yīng), Dao 的工作原理九杂,是否可以重載颁湖?

答:不能重載,因?yàn)橥ㄟ^(guò) Dao 尋找 Xml 對(duì)應(yīng)的 sql 的時(shí)候全限名+方法名的保存和尋找策
略例隆。接口工作原理為 jdk 動(dòng)態(tài)代理原理甥捺,運(yùn)行時(shí)會(huì)為 dao 生成 proxy,代理對(duì)象會(huì)攔截接口
方法镀层,去執(zhí)行對(duì)應(yīng)的 sql 返回?cái)?shù)據(jù)涎永。

23、Mybatis 映射文件中,如果 A 標(biāo)簽通過(guò) include 引用了 B 標(biāo)簽的內(nèi)容羡微,請(qǐng)問(wèn)谷饿,B 標(biāo)簽?zāi)芊穸x在 A 標(biāo)簽的后面,還是說(shuō)必須定義在 A 標(biāo)簽的前面妈倔?

答:雖然 Mybatis 解析 Xml 映射文件是按照順序解析的博投,但是,被引用的 B 標(biāo)簽依然可以
定義在任何地方盯蝴,Mybatis 都可以正確識(shí)別毅哗。原理是,Mybatis 解析 A 標(biāo)簽捧挺,發(fā)現(xiàn) A 標(biāo)簽引
用了 B 標(biāo)簽虑绵,但是 B 標(biāo)簽尚未解析到,尚不存在闽烙,此時(shí)翅睛,Mybatis 會(huì)將 A 標(biāo)簽標(biāo)記為未解
析狀態(tài),然后繼續(xù)解析余下的標(biāo)簽黑竞,包含 B 標(biāo)簽捕发,待所有標(biāo)簽解析完畢,Mybatis 會(huì)重新
解析那些被標(biāo)記為未解析的標(biāo)簽很魂,此時(shí)再解析 A 標(biāo)簽時(shí)扎酷,B 標(biāo)簽已經(jīng)存在,A 標(biāo)簽也就可
以正常解析完成了遏匆。

24法挨、Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件幅聘,id 是否可以重復(fù)坷剧?

答:不同的 Xml 映射文件,如果配置了 namespace喊暖,那么 id 可以重復(fù)惫企;如果沒(méi)有配置
namespace,那么 id 不能重復(fù)陵叽;畢竟 namespace 不是必須的狞尔,只是最佳實(shí)踐而已。原因就
是 namespace+id 是作為 Map<String, MappedStatement>的 key 使用的巩掺,如果沒(méi)有
namespace偏序,就剩下 id,那么胖替,id 重復(fù)會(huì)導(dǎo)致數(shù)據(jù)互相覆蓋研儒。有了 namespace豫缨,自然 id 就
可以重復(fù),namespace 不同端朵,namespace+id 自然也就不同好芭。

25、Mybatis 中如何執(zhí)行批處理冲呢?

答:使用 BatchExecutor 完成批處理舍败。

26、Mybatis 都有哪些 Executor 執(zhí)行器敬拓?它們之間的區(qū)別是什么邻薯?

答:Mybatis 有三種基本的 Executor 執(zhí)行器,SimpleExecutor乘凸、ReuseExecutor厕诡、
BatchExecutor。
1)SimpleExecutor:每執(zhí)行一次 update 或 select营勤,就開(kāi)啟一個(gè) Statement 對(duì)
象灵嫌,用完立刻關(guān)閉 Statement 對(duì)象。
2)ReuseExecutor:執(zhí)行 update 或 select冀偶,以 sql 作為
key 查找 Statement 對(duì)象,存在就使用渔嚷,不存在就創(chuàng)建进鸠,用完后,不關(guān)閉 Statement 對(duì)象形病,
而是放置于 Map3)BatchExecutor:完成批處理客年。

27、Mybatis 中如何指定使用哪一種 Executor 執(zhí)行器漠吻?

答:在 Mybatis 配置文件中量瓜,可以指定默認(rèn)的 ExecutorType 執(zhí)行器類型,也可以手動(dòng)給
DefaultSqlSessionFactory 的創(chuàng)建 SqlSession 的方法傳遞 ExecutorType 類型參數(shù)途乃。

28绍傲、Mybatis 執(zhí)行批量插入,能返回?cái)?shù)據(jù)庫(kù)主鍵列表嗎耍共?

答:能烫饼,JDBC 都能,Mybatis 當(dāng)然也能试读。

29杠纵、Mybatis 是否可以映射 Enum 枚舉類?

答:Mybatis 可以映射枚舉類钩骇,不單可以映射枚舉類比藻,Mybatis 可以映射任何對(duì)象到表的一
列上铝量。映射方式為自定義一個(gè) TypeHandler,實(shí)現(xiàn) TypeHandler 的 setParameter()和
getResult()接口方法银亲。TypeHandler 有兩個(gè)作用慢叨,一是完成從 javaType 至 jdbcType 的轉(zhuǎn)換,
二是完成 jdbcType 至 javaType 的轉(zhuǎn)換群凶,體現(xiàn)為 setParameter()和 getResult()兩個(gè)方法插爹,分別
代表設(shè)置 sql 問(wèn)號(hào)占位符參數(shù)和獲取列查詢結(jié)果。

30请梢、如何獲取自動(dòng)生成的(主)鍵值赠尾?

答:配置文件設(shè)置 usegeneratedkeys 為 true

31、在 mapper 中如何傳遞多個(gè)參數(shù)毅弧?

答:
1)直接在方法中傳遞參數(shù)气嫁,xml 文件用#{0} #{1}來(lái)獲取
2)使用 @param 注解:這樣可以直接在 xml 文件中通過(guò)#{name}來(lái)獲取

32、resultType resultMap 的區(qū)別够坐?

答:
1)類的名字和數(shù)據(jù)庫(kù)相同時(shí)寸宵,可以直接設(shè)置 resultType 參數(shù)為 Pojo 類
2)若不同,需要設(shè)置 resultMap 將結(jié)果名字和 Pojo 名字進(jìn)行轉(zhuǎn)換

33元咙、使用 MyBatis 的 mapper 接口調(diào)用時(shí)有哪些要求梯影?

答:
1)Mapper 接口方法名和 mapper.xml 中定義的每個(gè) sql 的 id 相同
2)Mapper 接口方法的輸入?yún)?shù)類型和 mapper.xml 中定義的每個(gè) sql 的 parameterType 的
類型相同
3)Mapper 接口方法的輸出參數(shù)類型和 mapper.xml 中定義的每個(gè) sql 的 resultType 的類型
相同
4)Mapper.xml 文件中的 namespace 即是 mapper 接口的類路徑。

34庶香、Mybatis 比 IBatis 比較大的幾個(gè)改進(jìn)是什么甲棍?

答:
1)有接口綁定,包括注解綁定 sql 和 xml 綁定 Sql
2)動(dòng)態(tài) sql 由原來(lái)的節(jié)點(diǎn)配置變成 OGNL 表達(dá)式
3) 在一對(duì)一,一對(duì)多的時(shí)候引進(jìn)了
association,在一對(duì)多的時(shí)候引入了 collection 節(jié)點(diǎn),不過(guò)都是在 resultMap 里面配置

35、IBatis 和 MyBatis 在核心處理類分別叫什么赶掖?

答:IBatis 里面的核心處理類交 SqlMapClient,MyBatis 里面的核心處理類叫做 SqlSession感猛。

36、IBatis 和 MyBatis 在細(xì)節(jié)上的不同有哪些奢赂?

答:
1)在 sql 里面變量命名有原來(lái)的#變量# 變成了#{變量}
2)原來(lái)的變量變成了${變量}
3)原來(lái)在 sql 節(jié)點(diǎn)里面的 class 都換名字交 type
4)原來(lái)的 queryForObject queryForList 變成了 selectOne selectList5)原來(lái)的別名設(shè)置在映
射文件里面放在了核心配置文件里

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陪白,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子膳灶,更是在濱河造成了極大的恐慌咱士,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轧钓,死亡現(xiàn)場(chǎng)離奇詭異司致,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)聋迎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)脂矫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人霉晕,你說(shuō)我怎么就攤上這事庭再±剔龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵拄轻,是天一觀的道長(zhǎng)颅围。 經(jīng)常有香客問(wèn)我,道長(zhǎng)恨搓,這世上最難降的妖魔是什么院促? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮斧抱,結(jié)果婚禮上常拓,老公的妹妹穿的比我還像新娘。我一直安慰自己辉浦,他們只是感情好弄抬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著宪郊,像睡著了一般掂恕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弛槐,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天懊亡,我揣著相機(jī)與錄音,去河邊找鬼乎串。 笑死店枣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的灌闺。 我是一名探鬼主播艰争,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坏瞄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桂对!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鸠匀,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蕉斜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后缀棍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宅此,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年爬范,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了父腕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡青瀑,死狀恐怖璧亮,靈堂內(nèi)的尸體忽然破棺而出萧诫,到底是詐尸還是另有隱情,我是刑警寧澤枝嘶,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布帘饶,位于F島的核電站,受9級(jí)特大地震影響群扶,放射性物質(zhì)發(fā)生泄漏及刻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一竞阐、第九天 我趴在偏房一處隱蔽的房頂上張望缴饭。 院中可真熱鬧,春花似錦馁菜、人聲如沸茴扁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)峭火。三九已至,卻和暖如春智嚷,著一層夾襖步出監(jiān)牢的瞬間卖丸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工盏道, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稍浆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓猜嘱,卻偏偏與公主長(zhǎng)得像衅枫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朗伶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 【Java架構(gòu)師面試網(wǎng)】收集整理了一些Java面試的常見(jiàn)問(wèn)題论皆,這些問(wèn)題可能會(huì)在你下一次技術(shù)面試中遇到益楼。想成為Jav...
    6cc011a46fcd閱讀 448評(píng)論 0 3
  • 前言 MyBatis是一個(gè)優(yōu)秀的持久層ORM框架粒督,它對(duì)jdbc的操作數(shù)據(jù)庫(kù)的過(guò)程進(jìn)行封裝陪竿,使開(kāi)發(fā)者只需要關(guān)注SQL...
    AI喬治閱讀 641評(píng)論 0 5
  • 久違的晴天,家長(zhǎng)會(huì)屠橄。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí)族跛,離放學(xué)已經(jīng)沒(méi)多少時(shí)間了捐康。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,528評(píng)論 16 22
  • 今天感恩節(jié)哎庸蔼,感謝一直在我身邊的親朋好友解总。感恩相遇!感恩不離不棄姐仅。 中午開(kāi)了第一次的黨會(huì)花枫,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,573評(píng)論 0 11
  • 可愛(ài)進(jìn)取,孤獨(dú)成精掏膏。努力飛翔劳翰,天堂翱翔。戰(zhàn)爭(zhēng)美好馒疹,孤獨(dú)進(jìn)取佳簸。膽大飛翔,成就輝煌颖变。努力進(jìn)取生均,遙望,和諧家園腥刹÷黼剩可愛(ài)游走...
    趙原野閱讀 2,738評(píng)論 1 1