Mybatis 最佳實踐-Mapper擴展

背景

MyBatis提供了一個generator插件,通過這個插件可以自動實現mapper.xml 和對應的Mapp 以及實體Bean,用這個插件的好處是,xml中很多sql不用自己編寫,直接通過數據庫反向生成即可。但是他也有一個很大的弊端。


弊端:

1、如果直接修改xml文件,以後數據庫新增字段只能手動改文件,擴展很麻煩

2、如果使用example方式查詢,每次查詢都要全部結果,對數據量大的且需要列少的業務,

SQL查詢會成為瓶頸。

最佳實踐

1、生成簡單方法;

生成簡單方法,Example相關選項都設置為false

不使用Example方式,且只生成簡單的操作,generator配置片段如下,關鍵字表key_words

Mybatis 最佳實踐-Mapper擴展

generator文件配置片段

這樣配置只會生成如下幾個方法,左側基礎增刪改查方法列表,只提供id查詢

Mybatis 最佳實踐-Mapper擴展

生成的基礎方法

其他方法就可以自己進行擴展,擴展方式如下

2、擴展xml和mapper文件。

新建KeyWordsBizMapper接口 繼承自動生成的KeyWordsMapper

Mybatis 最佳實踐-Mapper擴展

擴展的Mapper接口

有了Mapper接口,就要擴展xml實現自己的擴展方法。

xml裡面有幾個注意事項

namespace 需要指向擴展Mapper(和擴展Mapper綁定)

使用BaseResultMap 擴展自KeyWordsMapper, 這樣做的好處是如果重新生成,擴展xml自動使用新映射

Base_Column_List 擴展自 KeyWordsMapper,好處同樣,重新生成自動使用

Mybatis 最佳實踐-Mapper擴展

擴展的xml文件

其他使用和其他xml沒有任何區別,

總結

現在大家想一下,如果我數據庫增加字段,可不可以自動生成?我需要改什麼?

答案是可以生成,不用改,直接覆蓋原有生成的bean,xml,mapper。


分享到:


相關文章: