mybatis-plus maven代碼生成器

前言

初次接觸mybatis plus是17年末,當時的版本是2.0+,在那之前公司使用的mybatis框架是tk.mybatis,也是衍生於mybatis的一款擴展框架。當時拿mybatis plus與tk相比雖然覺得plus功能已經足夠強大了(如邏輯刪除、sql打印插件、分頁插件、雪花算法生成id等),但plus到了3.0之後新增的函數式編程才讓我覺得開發者的體驗質變版的提升,不會再出現字段輸錯的問題(注意換行,觀感更強),具體可到官網網站查看,國人開源,文檔也很詳細完善,就不在此介紹了。

tk.mybatis與mybatis的代碼生成器相同,都是通過maven插件+配置文件或IDE插件+配置文件生成,而mybatis-plus則需新建一個生成項目去生成,不同數據庫的生成都要重新配置,對於我而言這2種都十分麻煩,於是開始從對mybatis-plus的生成源碼進行更改後轉成了將生成源碼更改並集成為maven插件。

生成流程

雖然市面上也有不少生成器框架,連前端vue頁面都生成了的都有,但習慣了前後端分離的我只需要後端頁面(沒有藝術感的我對樣式敬而遠之),且還想生成器可以根據自己的擴展模板(如常量類、Manager層、VO或DTO)去生成文件。後文介紹的框架並不一定適用於大家的需求,但大家可以瞭解下生成的流程,因為萬變不離其宗,思想總有相同[doge]:

1.設定各層(Entity、Constant、DAO、Service等)模板文件

2.JDBC連接數據庫獲取相關表信息並轉成相應類(如Table存儲表信息,TableField存儲字段信息)

3.遍歷數據庫表信息類對模板文件進行填充

模板文件:文件中通過特定範式表示動態內容,通過外部設定範式值進行範式替換填充以獲得目標文件樣式

乾貨時間

先說下一開始造這貨的主要目的(也是這貨的功能):

  • 由於項目Root模塊下的各子模塊可能負責的業務不同,即連接的數據庫不同,所以每個模塊都想配置一個生成器,配置也必須簡單
  • 生成的位置必須易於提取
  • 由於負責其他業務的同事可能需要了解我負責業務的一些信息或常量,但他不一定了解我當前負責業務的常量劃分(如商品庫存的常量是放到商品的常量類中還是商品庫存的常量類中,如果是放到商品常量類中會不會由於不瞭解誤用了商品類的),於是決定通過傻瓜式生成常量類,只要數據庫表字段含特定的常量範式【如:刪除(YES:1-已刪除,NO:0-未刪除)】,就可以生成字段所屬表的常量類
  • 文件模板必須可以自定義與擴展(如其它層Manager、DTO等模板文件)

作為一個生成工具沒必要考慮模板框架的性能問題,且只需對模板語法略知一二就可配置模板文件,所以生成器也就從mybatis plus原支持的模板Velocity與Freemarker中隨便選了個Freemarker。


快速開始

  • 添加maven插件依賴
mybatis-plus maven代碼生成器

  • 執行結果
mybatis-plus maven代碼生成器

生成的文件會放到當前項目模塊的targer/generated-sources目錄下,上圖中刪除字段常量範式為:刪除(YES:1-已刪除,NO:0-未刪除),生成的常量結果如上圖,如果字段是字符串範式為:狀態(ENABLE-啟用,DISABLE-禁用),則將無視commentPattern配置生成上圖效果。當時達到目的效果,唔.....

mybatis-plus maven代碼生成器

更多配置項

擴展配置項挺多的,如:

  • 覆蓋插件原有的各層ftl模板文件(templates子標籤xxxPattern、xxxPath)
  • 自定義擴展模板文件templates子標籤cusoms)
  • 不生成特定層文件
  • ......

更多配置項可到源碼地址查看文檔,這裡就不多BB啦。造出來的輪子雖然不適用於所有人,但製造過程的思想希望還是能對大家有點用的。

附:看過我之前swagger2-spring-boot-starer文章的條友們應該都知道github上框架的源碼地址是https://github.com/{groupId最後位}/{artifactId}這個小技巧啦,在該文章中 groupId最後位 = wilson-he,artifactId=generator-maven-plugin,gitee上也是同理,只是地址前綴改為https://gitee.com/


分享到:


相關文章: