當前位置:編程學習大全網 - 源碼下載 - Mybatis源代碼執行過程

Mybatis源代碼執行過程

為什麽要研究它?

答:MyBatisPlus可以為我們節省大量的工作時間,它可以自動完成所有的CRUD代碼!

優勢:

1.易於使用和掌握。

2.sql是用xml編寫的,用於統壹管理和優化。

3.從程序代碼中分離sql。

4.提供映射標簽,支持對象和數據庫之間orm字段關系的映射。

5.提供對象關系映射標簽,支持對象關系的建立和維護。

6.提供xml標記來支持編寫動態sql。

MyBatis Plus(簡稱MP)是MyBatis的增強工具,它基於MyBatis,只增強不改動,為簡化開發,提高效率而生。

就像1P,魂鬥羅裏的2P,有了基友,效率翻倍。

特點:

無創:只加強不改變,引入不影響現有項目,如絲般順滑。

低損耗:啟動時會自動註入基本的CURD,性能幾乎沒有損失,強大的CRUD操作可以直接面向對象操作:內置的universal Mapper和universal Service只需要少量配置就可以實現單個表的大部分CRUD操作,還有強大的condition constructor,可以滿足各種使用需求,支持Lambda表單調用:通過Lambda表達式可以方便地編寫各種查詢條件,不用擔心字段拼寫錯誤。

支持組件自動生成:最多支持四種主鍵策略(包括分布式唯壹ID生成器序列),可自由配置,完美解決主鍵問題。

支持ActiveRecord模式:支持ActiveRecord表單調用,實體類只有繼承模型類才能執行強大的CRUD操作。

支持自定義全局通用操作:支持全局通用方法註入(壹次編寫,隨處使用)。

內置代碼生成器:使用代碼或Maven插件可以快速生成Mapper、Model、Service和Controller層代碼,支持模板引擎,還有很多定制配置供妳使用內置分頁插件:基於MyBatis物理分頁,開發者無需關心具體操作。配置好插件後,寫分頁就相當於普通的列表查詢。

分頁插件支持各種數據庫:MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer等數據庫。

內置性能分析插件:可以輸出Sql語句及其執行時間。建議在開發測試時啟用該功能,可以快速找出速度慢的查詢。

內置全局攔截插件:提供對全表刪除更新操作的智能分析和攔截,還可以自定義攔截規則,防止誤操作。

1.1,介紹mybatis-plus的相關maven依賴。

mybatis-plus在春季開機場景啟動器中的介紹

Ps:記住mybatis和mybatis-spring的maven依賴不能再引入pom.xml文件,這壹點在mybatis-plus的官方文檔中已經說的很清楚了。

1.2,創建壹個數據表

(1)SQL語句

(2)數據表結構

1.3,創建java bean

根據數據表創建新的相關實體類

1包com.example.demo.pojo

1.4,配置應用程序屬性

數據源使用druid

crud實驗之前,簡單對比壹下mybatis和mybatis-plus。

2.1,mybatis和mybatis-plus之間的比較

(1)問題:假設我們已經有了壹個tbl_Employee表和對應的實體類Employee,我們需要做什麽來實現tbl_employee表的CRUD操作?

(2)實現方式:基於Mybatis,需要編寫EmployeeMapper接口,手工編寫CRUD方法提供的EmployeeMapper.xml的映射文件,手工編寫每個方法對應的SQL語句。基於Mybatis-plus,只需要創建EmployeeMapper接口。並繼承BaseMapper接口。這就是使用mybatis-plus所需要做的全部工作,甚至不需要創建SQL映射文件。

2.2.BaseMapper界面簡介

(1)如何理解核心接口BaseMapper?

使用Mybatis-Plus時,最核心的操作類是BaseMapper接口,它最終是使用Mybatis接口編程的實現機制。默認情況下,它提供了壹系列添加、刪除、修改和查詢的基本方法,開發者不需要為這些基本操作編寫sql(Mybatis提供的機制是開發者需要在mapper.xml中提供SQL語句)。在這種情況下,我們可以猜測Mybatis-Plus壹定已經完成了BaseMapper接口提供的方法的SQL語句生成操作。

(2)BaseMapper接口為我們定義了哪些方法?

BaseMapper接口源代碼:

(3)MyBatis-plus 1中常用的註釋

因為我們的數據表名稱與實體類的類名不壹致,實體類的字段名與數據表不對應,所以需要引入mybatis-plus的註釋。

編寫EmployeeMapper接口,繼承BaseMapper接口。

準備考試環境:

(1)插入

(2)修改

控制臺打印的Sql語句

如果我們不設置實體類的email和gender屬性會怎麽樣?

控制臺sql語句:

顯然,mybatis-plus為我們做了壹個非空的判斷。如果為空,默認情況下不會更新相應的字段。妳想想,這是不是和mybatis裏的動態sql差不多?

這種治療會帶來什麽好處?

(3)詢問

SelectById方法

SelectBatchIds方法

Ps:發現sql的in關鍵字其實是用在這個方法的底層。

SelectByMap方法

⑷刪除

3、不得不提條件構造器——包裝器。

3.1.包裝器及其子類介紹

(1)包裝器:抽象類的條件構造,最頂層的父類,抽象類中提供的三個方法和其他方法。

  • 上一篇:關機的時候出現到dwn.exe進程錯誤是怎麽回事
  • 下一篇:讀寫驅動源代碼
  • copyright 2024編程學習大全網