MyBatis開發總結

2021-10-25 11:36:33 字數 1860 閱讀 9747

二、查詢結果屬性對映的最佳實踐

1、基本型別 :resulttype=基本型別

2、list型別: resulttype=list中元素的型別

3、map型別 resulttype =map

mybatis**實現方式

使用mybatis generator做**自動生成,或者使用mybatisplus解決方案

使用xml方式實現

使用註解方式實現

以上三種實現方式,有自己適合的應用場景,按照4.9章節中整合方式,三種方法全部可以支援。下面是結合筆者多年的mybatis使用經驗,總結出在不同的場景下,使用不同的實現方式

mybatis generator或mybatisplus能夠完成90%的單錶操作,而且不用自己去書寫sql。使用非常方便!

這種用法面對開發人員非常友好,有的人說經常用這個會忘記怎麼寫sql。我可以斬釘截鐵的回答:不會的。因為你腦袋裡面沒有sql,是用不明白mybatis generator生成的**或者mybstis plus的。

但是會產生乙個問題,就是通常寫乙個關聯查詢就可以得到的結果,開發人員會傾向於用多次單錶查詢(因為寫起來簡單,可以犯懶)。說實話效能倒不會一定下降,但**會很冗餘。專案組如果想避免這種情況發生,要特意強調做好規範。

mybatis generator自動生成的** 最大程度幫你完成單錶操作。涉及到關聯查詢、繼承,mybatis檔案和sql還是要你自己寫,但是不要在生成的**基礎上面改!切記!

如果使用自動**生成感覺不適合自己或自己的專案,使用類似於mybatis-plus這種第三方增強庫,也是很方便的。

在web開發中,有乙個典型的應用場景是:乙個web table頁面有多個查詢條件,選擇填寫不同的查詢條件得到不同的查詢結果,多個查詢條件只填寫幾個條件進行查詢,其他的條件不填寫。

面對這種場景,就需要orm框架對動態sql(根據傳入引數不同,sql會發生變化)有很好的支援,mybatis的xml最合適

使用駝峰對映結果屬性(約定大於配置的最佳實踐)

mybatis給我們提供了一種對映方式,如果屬性的命名是遵從駝峰命名法的,資料列名遵從下劃線命名。這樣就可以一勞永逸,無論以後寫多少查詢sql都不需要單獨制定對映規則。 那麼可以使用這種方式,類似如下:

實體類屬性username對應sql的字段user_name;

實體類屬性userid對應sql的字段user_id;

在spring boot環境下只需要寫這樣乙個配置即可。

mybatis:

configuration:

mapunderscoretocamelcase:

true

其他的實現方式(知道有這幾種方式即可,一旦別人用你知道怎麼回事,自己不要用,麻煩!)

其他的實現方式都很不友好,都需要寫乙個查詢sql,做一套對映配置。

第一種:xml的屬性對映舉例resultmap

>

"data.user" id=

"userresultmap"

>

<

!-- 用id屬性來對映主鍵字段 --

>

"id" column=

"user_id"

/>

<

!-- 用result屬性來對映非主鍵字段 --

>

"username" column=

"user_name"

/>

<

/resultmap>

<

(basepackages =

)public

class

}

mybatis開發總結

一般的系統,對資料庫進行增刪改查是必不可少的。那麼,在編寫這些介面的時候,我們是怎麼進行編寫的呢?廢話,肯定是按需求寫的嘛!你要查資料,定義乙個抽象方法,把要輸入引數和返回的型別設計好即可,往往在返回結果的時候,我們一般返回結果型別是根據需要得到的資料而定的,比如,我想查詢某個學校的全部學生,每乙個...

Mybatis外掛程式開發

這裡主要了解一下mybatis的外掛程式開發。mybatis外掛程式準確的說應該是 介面名為interceptor,在配置中叫外掛程式,功能非常強大,可以讓我們無侵入式的對sql的執行進行干涉,從sql語句重寫 引數注入 結果集返回等每個主要環節。executor update,query,flus...

MyBatis學習總結 04 使用註解開發

mybatis學習總結 04 使用註解開發 面向介面程式設計 關於介面的理解 介面應有兩類 第一類是對乙個個體的抽象,它可對應為乙個抽象體 abstract class 第二類是對乙個個體某一方面的抽象,即形成乙個抽象 inte ce 三個面向區別 利用註解開發 1 我們在我們的介面中新增註解 查詢...