二、查詢結果屬性對映的最佳實踐
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 我們在我們的介面中新增註解 查詢...