1. 程式人生 > >mybatis generator根據表生成帶 註釋的實體類

mybatis generator根據表生成帶 註釋的實體類

       mybatis generator給我們開發帶來諸多方便,免去一些繁瑣的自寫mapper、dao、實體類的步驟,但是有時會根據自己需要定製自己的東西,比如生成帶註釋的實體類,這時需要我們修改generator的原始碼。

source包,建立maven專案,把源放進去。

開啟org.mybatis.generator.api.dom.java.Field類,這是生成實體檔案屬性的寫入類

找到getFormattedContent這個方法,加上這段程式碼,表示在寫入屬性名後面加上註釋。

這樣還沒不行,我們開啟org.mybatis.generator.internal.util.JavaBeansUtil類。在getJavaBeansField

方法中加入如下程式碼

這樣就完成了讀取表字段註釋寫入到實體類中。

接著我們看看如何在類名上面加上類模型對應的表名和表註釋

我們直接找到org.mybatis.generator.internal.DefaultCommentGenerator類的addModelClassComment方法,

我們直接將下面這個條件判斷註釋掉(suppressAllComents和addRemarkComents可以在generator.xml設定的屬性,我這裡暴力強制去除這個條件,具體可以自己研究。)

在下面這行表示獲取表註釋

接著定製自己的註釋樣式

把沒必要的可以註釋掉不讓生成

當我們打包後把它替換原來的jar包再用它處理生成時發覺只生成了屬性註釋,沒有對應的表註釋。

於是我們開啟連線jdbc連線資料庫的工廠類org.mybatis.generator.internal.JDBCConnectionFactory,找到getConnection這個方法

在連線屬性設定這裡加上這一行。

好!接著打包生成jar檔案,替換原來的jar包,再次執行生成。

沒問題!

但是如果我們要加上是對應哪個表要怎麼弄呢?

我們再回到org.mybatis.generator.internal.DefaultCommentGenerator類的addModelClassComment方法裡,

知道introspectedTable這個是可以獲取表屬性的一個物件,但是我們在類裡面發現並沒有能獲取表名的屬性,這時我們可以自己加上表名的屬性。

我們接著看看怎麼獲取表名名並設定到屬性裡面,

找到org.mybatis.generator.internal.db.DatabaseIntrospector這個類的enhanceIntrospectedTable方法

再這裡獲取表名和設定物件屬性

最後在addModelClassComment方法上加上如下程式碼

好的,可以了。為了防止註釋上的中文亂碼。找到org.mybatis.generator.api.MyBatisGenerator寫入實體類檔案的方法writeFile。加上UTF-8輸出流方式

最後打包替換,再次生成實體類檔案,如圖