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