大數據

還在使用MyBatis Generator?試試這個工具

代碼生成

在企業軟件開發過程中,大多數時間都是面向數據庫表的增刪改查開發。通過通用的增刪改查代碼生成器,可以有效的提高效率,降低成本;把有規則的重複性勞動讓機器完成,解放開發人員。

MyBatis Generator

  • MyBatis Generator 是 MyBatis 提供的一個代碼生成工具

可以幫我們生成表對應的持久化對象(po)、操作數據庫的接口(dao)、CRUD sql 的 xml(mapper)。

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>${last.version}</version>
    <configuration>
        <!--mybatis的代碼生成器的配置策略文件-->
        <configurationFile>mybatis-generator-config.xml</configurationFile>
    </configuration>
</plugin>
  • 配置代碼生成相關的策略文件 mybatis-generator-config.xml
<generatorConfiguration>
    <context>
        <!-- jdbc連接 -->
        <jdbcConnection> ... </jdbcConnection>
        <!-- schema為數據庫名,tableName為對應的數據庫表名 -->
        <table> ... </table>
        <!-- 註釋 -->
        <commentGenerator> ... </commentGenerator>
        <!-- 類型轉換 -->
        <javaTypeResolver> ... </javaTypeResolver>
        <!-- 生成實體類配置 -->
        <javaModelGenerator> ... </javaModelGenerator>
        <!-- 生成Mapper.xml文件配置 -->
        <sqlMapGenerator> ... </sqlMapGenerator>
        <!-- 生成Mapper.java 接口-->
        <javaClientGenerator> ... </javaClientGenerator>
    </context>
</generatorConfiguration>
  • 缺點
  1. 每次代碼生成需要配置對應的 mybatis-generator-config 通過 XML 的形式配置相關生成屬性和規則
  2. 無法生成通用的 Controller、Service 類,無法自定義模板等

綜上兩點: mybatis-generator 使用非常不方便

EasyCode

EasyCode 是基於 IntelliJ IDEA Ultimate 版開發的一個代碼生成插件,主要通過自定義模板(基於 velocity)來生成各種你想要的代碼。通常用於生成 Entity、Dao、Service、Controller。如果你動手能力強還可以用於生成 HTML、JS、PHP 等代碼。理論上來說只要是與數據有關的代碼都是可以生成的。

快速上手

  1. 安裝 IDEA EasyCode 插件。 支持在線安裝,插件市場搜索安裝即可。

  1. 使用 IDEA 連接目標數據源

  1. 選擇目標表進行代碼生成

進階配置

如上即可完成基於單表的增刪改查方法,包括 Controller、Service、Mapper、Entity。 但默認生成是基於原生 MyBatis 的通用文件,不適用於 MyBatisPlus、通用 Mapper 等 Mybatis 擴展插件。我們可以通過編輯 EasyCode 的模板文件,來動態添加我們的生成規則,並且可以導出給其他人使用。

  • 甚至於可以配置新的模板生成前端頁面,比如基於 Element 的增刪改查

總結

  • 當然很多腳手架都會內置代碼生成功能。 例如 pig 的開發平臺模塊 ,通過自定義模板引擎形式實現代碼生成,能夠更好的整合現有業務提開發效率。

項目推薦: Spring Cloud 、Spring Security OAuth2的RBAC權限管理系統 歡迎關注

Leave a Reply

Your email address will not be published. Required fields are marked *