mybatis知识点
1.Mybatis比IBatis比較大的幾個(gè)改進(jìn)是什么 a.有接口綁定,包括注解綁定sql和xml綁定Sql , b.動(dòng)態(tài)sql由原來的節(jié)點(diǎn)配置變成OGNL表達(dá)式, c. 在一對一,一對多的時(shí)候引進(jìn)了association,在一對多的時(shí)候引入了collection 節(jié)點(diǎn),不過都是在resultMap里面配置
2.2.什么是MyBatis的接口綁定,有什么好處 接口映射就是在IBatis中任意定義接口,然后把接口里面的方法和SQL語句綁定, 我們直接調(diào)用接口方法就可以,這樣比起原來了SqlSession提供的方法我們可以有更加靈活的選擇和設(shè)置. 3.接口綁定有幾種實(shí)現(xiàn)方式,分別是怎么實(shí)現(xiàn)的? 接口綁定有兩種實(shí)現(xiàn)方式,一種是通過注解綁定,就是在接口的方法上面加上 @Select@Update等注解里面包含Sql語句來綁定,另外一種就是通過xml里面寫SQL來綁定, 在這種情況下,要指定xml映射文件里面的namespace必須為接口的全路徑名.
4.什么情況下用注解綁定,什么情況下用xml綁定 當(dāng)Sql語句比較簡單時(shí)候,用注解綁定, 當(dāng)SQL語句比較復(fù)雜時(shí)候,用xml綁定,一般用xml綁定的比較多
5.5.MyBatis實(shí)現(xiàn)一對一有幾種方式?具體怎么操作的 有聯(lián)合查詢和嵌套查詢,聯(lián)合查詢是幾個(gè)表聯(lián)合查詢,只查詢一次, 通過在resultMap里面配置association節(jié)點(diǎn)配置一對一的類就可以完成; 嵌套查詢是先查一個(gè)表,根據(jù)這個(gè)表里面 的結(jié)果的外鍵id,去再另外一個(gè)表里面查詢數(shù)據(jù),也是通過association配置,但另外一個(gè)表 的查詢通過select屬性配置
6.6.MyBatis實(shí)現(xiàn)一對多有幾種方式,怎么操作的 有聯(lián)合查詢和嵌套查詢,聯(lián)合查詢是幾個(gè)表聯(lián)合查詢,只查詢一次,通過在resultMap里面配 置collection節(jié)點(diǎn)配置一對多的類就可以完成; 嵌套查詢是先查一個(gè)表,根據(jù)這個(gè)表里面的 結(jié)果的外鍵id,去再另外一個(gè)表里面查詢數(shù)據(jù),也是通過配置collection,但另外一個(gè)表的 查詢通過select節(jié)點(diǎn)配置 7.MyBatis里面的動(dòng)態(tài)Sql是怎么設(shè)定的?用什么語法? MyBatis里面的動(dòng)態(tài)Sql一般是通過if節(jié)點(diǎn)來實(shí)現(xiàn),通過OGNL語法來實(shí)現(xiàn),但是如果要寫的完 整,必須配合where,trim節(jié)點(diǎn),where節(jié)點(diǎn)是判斷包含節(jié)點(diǎn)有內(nèi)容就插入where,否則不插 入,trim節(jié)點(diǎn)是用來判斷如果動(dòng)態(tài)語句是以and 或or開始,那么會(huì)自動(dòng)把這個(gè)and或者or取 掉 8.IBatis和MyBatis在核心處理類分別叫什么 IBatis里面的核心處理類交SqlMapClient, MyBatis里面的核心處理類叫做SqlSession
?
7.10.講下MyBatis的緩存 MyBatis的緩存分為一級緩存和二級緩存, 一級緩存放在session里面,默認(rèn)就有,二級緩存放在它的命名空間里,默認(rèn)是打開的, 使用二級緩存屬性類需要實(shí)現(xiàn)Serializable序列化接 口(可用來保存對象的狀態(tài)),可在它的映射文件中配置<cache/> 11.MyBatis(IBatis)的好處是什么 ibatis把sql語句從Java源程序中獨(dú)立出來, 放在單獨(dú)的XML文件中編寫,給程序的維護(hù)帶來了很大便利。 ibatis封裝了底層JDBC API的調(diào)用細(xì)節(jié),并能自動(dòng)將結(jié)果集轉(zhuǎn)換成Java Bean對象, 大大簡化了Java數(shù)據(jù)庫編程的重復(fù)工作。 因?yàn)镮batis需要程序員自己去編寫sql語句, 程序員可以結(jié)合數(shù)據(jù)庫自身的特點(diǎn)靈活控制sql語句, 因此能夠?qū)崿F(xiàn)比hibernate等全自動(dòng)orm框架更高的查詢效率,能夠完成復(fù)雜查詢。.
?
?
通過上篇介紹mybatis與hibernate區(qū)別,我們已經(jīng)能得出一些mybatis的優(yōu)缺點(diǎn),但那只是相對于hibernate的,并不全面,我來繼續(xù)總結(jié)mybatis的優(yōu)缺點(diǎn),以便大家對于mybatis的了解能更全面些。但我所說的優(yōu)缺點(diǎn),僅是我個(gè)人總結(jié)并結(jié)合使用體驗(yàn)后得出的結(jié)果,并不能代表大眾想法,因此才以“淺談”作為文章標(biāo)題。如果大家的見解與我不同,歡迎積極提出來一塊討論,我也借以彌補(bǔ)自己認(rèn)識的不足和短見。
優(yōu)點(diǎn):
1. 易于上手和掌握。
2. sql寫在xml里,便于統(tǒng)一管理和優(yōu)化。
3. 解除sql與程序代碼的耦合。
4. 提供映射標(biāo)簽,支持對象與數(shù)據(jù)庫的orm字段關(guān)系映射
5. 提供對象關(guān)系映射標(biāo)簽,支持對象關(guān)系組建維護(hù)
6. 提供xml標(biāo)簽,支持編寫動(dòng)態(tài)sql。
缺點(diǎn):
1. sql工作量很大,尤其是字段多、關(guān)聯(lián)表多時(shí),更是如此。
2. sql依賴于數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫移植性差。
3. 由于xml里標(biāo)簽id必須唯一,導(dǎo)致DAO中方法不支持方法重載。
4. 字段映射標(biāo)簽和對象關(guān)系映射標(biāo)簽僅僅是對映射關(guān)系的描述,具體實(shí)現(xiàn)仍然依賴于sql。(比如配置了一對多Collection標(biāo)簽,如果sql里沒有join子表或查詢子表的話,查詢后返回的對象是不具備對象關(guān)系的,即Collection的對象為null)
5. DAO層過于簡單,對象組裝的工作量較大。
6. ?不支持級聯(lián)更新、級聯(lián)刪除。
7. 編寫動(dòng)態(tài)sql時(shí),不方便調(diào)試,尤其邏輯復(fù)雜時(shí)。
8?提供的寫動(dòng)態(tài)sql的xml標(biāo)簽功能簡單(連struts都比不上),編寫動(dòng)態(tài)sql仍然受限,且可讀性低。
9. 若不查詢主鍵字段,容易造成查詢出的對象有“覆蓋”現(xiàn)象。
10. 參數(shù)的數(shù)據(jù)類型支持不完善。(如參數(shù)為Date類型時(shí),容易報(bào)沒有g(shù)et、set方法,需在參數(shù)上加@param)
11. 多參數(shù)時(shí),使用不方便,功能不夠強(qiáng)大。(目前支持的方法有map、對象、注解@param以及默認(rèn)采用012索引位的方式)
12. 緩存使用不當(dāng),容易產(chǎn)生臟數(shù)據(jù)。
?
總結(jié):
mybatis的優(yōu)點(diǎn)其實(shí)也是mybatis的缺點(diǎn),正因?yàn)閙ybatis使用簡單,數(shù)據(jù)的可靠性、完整性的瓶頸便更多依賴于程序員對sql的使用水平上了。sql寫在xml里,雖然方便了修改、優(yōu)化和統(tǒng)一瀏覽,但可讀性很低,調(diào)試也非常困難,也非常受限,無法像jdbc那樣在代碼里根據(jù)邏輯實(shí)現(xiàn)復(fù)雜動(dòng)態(tài)sql拼接。mybatis簡單看就是提供了字段映射和對象關(guān)系映射的jdbc,省去了數(shù)據(jù)賦值到對象的步驟而已,除此以外并無太多作為,不要把它想象成hibernate那樣強(qiáng)大,簡單小巧易用上手,方便瀏覽修改sql就是它最大的優(yōu)點(diǎn)了。
mybatis適用于小型且程序員能力較低的項(xiàng)目和人群使用,對于中大型項(xiàng)目來說我并不推薦使用,如果覺得hibernate效率低的話(實(shí)際上也是使用不當(dāng)所致,hibernate是實(shí)際上是不適用于擁有高負(fù)載的工程項(xiàng)目),還不如直接用spring提供的jdbc簡單框架(Template),同樣支持對象映射。
轉(zhuǎn)載于:https://www.cnblogs.com/panxuejun/p/6023704.html
總結(jié)
以上是生活随笔為你收集整理的mybatis知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Logger日志级别说明及设置方法、说明
- 下一篇: 照片处理软件(iSee图片专家) 3.9