1. 程式人生 > >Mybatis Generator 使用(Maven外掛)

Mybatis Generator 使用(Maven外掛)

最近搭一個專案後臺框架,專案採用SSM框架,專案比較緊急,所以選用Mybatis Generator來自動生成XML、Dao和Model來減少重複的工作。

Mybatis Generator有以下兩種使用方法:

為了保證專案方便管理,所以採用了Maven外掛的方式使用Mybatis Generator來自動生成程式碼。

  • 匯入Mybatis Generator外掛

    在pom.xml增加以下外掛:

   <plugin>
       <groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>
generate </goal> </goals> </execution> </executions> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration
>
</plugin>
  • 配置Mybatis Generator外掛

    生成的xml存放在src\main\resources路徑下 :

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
     <!-- java連線資料庫jar所在路徑 -->
    <classPathEntry
            location="E:\OpenCode\weixin\src\main\resources\mysql-connector-java-5.1.30.jar" />
    <context id="context1" targetRuntime="MyBatis3">
        <commentGenerator> 
            <!-- 是否去除自動生成的註釋 true:是 : false:否 --> 
            <property name="suppressAllComments" value="true" /> 
        </commentGenerator> 
         <!-- 資料庫連線資訊 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://120.25.89.67:3306/db_iyiqiba"
                        userId="ZSQ1" password="123" />
          <!-- mybatis裡專門用來處理NUMERIC和DECIMAL型別的策略 -->              
        <javaTypeResolver>  
            <property name="forceBigDecimals" value="true" />  
        </javaTypeResolver>

            <!-- 生成model類的包 和路徑 -->                        
        <javaModelGenerator targetPackage="com.iyiqiba.dao.model"
                            targetProject="src\main\java" />
              <!-- 生成Mapper.xml 所在路徑下面配置路徑為src\main\resources\ibatis-generator -->                
        <sqlMapGenerator targetPackage="ibatis-generator"
                         targetProject="src\main\resources" />
          <!-- 生成Dao介面所在包和檔案路徑 -->                  
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.iyiqiba.dao"
                          targetProject="src\main\java">
        </javaClientGenerator>            
          <!-- tableName:表名  domainObjectName:對應資料庫表的model類名稱-->    
        <table tableName="tb_student_base_info" domainObjectName="StudentBaseInfo">
            <!-- 如果設定為true,生成的model類會直接使用column本身的名字,而不會再使用駝峰命名方法,比如BORN_DATE,生成的屬性名字就是BORN_DATE,而不會是bornDate -->
            <property name="useActualColumnNames" value="false"/>
        </table>

        <table tableName="tb_student_detaill_info" domainObjectName="StudentDetaillInfo" >
            <property name="useActualColumnNames" value="false"/>
        </table>

        <table tableName="tb_business_base_info" domainObjectName="BusinessBaseInfo" >
            <property name="useActualColumnNames" value="false"/>
        </table>

        <table tableName="tb_business_detaill_info" domainObjectName="BusinessDetaillInfo" >
            <property name="useActualColumnNames" value="false"/>
        </table>

        <table tableName="tb_third_user_info" domainObjectName="ThirdUserInfo">
            <property name="useActualColumnNames" value="false"/>
        </table>

         <table tableName="tb_activity_comment" domainObjectName="ActivityComment">
            <property name="useActualColumnNames" value="false"/>
        </table>

         <table tableName="tb_activity_info" domainObjectName="ActivityInfo">
            <property name="useActualColumnNames" value="false"/>
        </table>

        <table tableName="tb_activity_join" domainObjectName="ActivityJoin">
            <property name="useActualColumnNames" value="false"/>
        </table>

         <table tableName="tb_activity_mark" domainObjectName="ActivityMark" >
            <property name="useActualColumnNames" value="false"/>
        </table>

         <table tableName="tb_address_info" domainObjectName="AddressInfo">
            <property name="useActualColumnNames" value="false"/>
        </table>

         <table tableName="tb_activity_placard" domainObjectName="ActivityPlacard" >
            <property name="useActualColumnNames" value="false"/>
        </table>

        <table tableName="tb_kind_info" domainObjectName="KindInfo" >
            <property name="useActualColumnNames" value="false"/>
        </table>
    </context>
</generatorConfiguration>

這裡並沒有遮蔽Example,很多人不想生成Example可能感覺比較雜亂。
可以通過在<table/>中配置enableUpdateByExample等資訊來去掉Example。

       <table tableName="tb_business_base_info" domainObjectName="BusinessBaseInfo"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
    enableSelectByExample="false" selectByExampleQueryId="false">
            <property name="useActualColumnNames" value="false"/>
        </table>

mybatis generator目標就是減少Dao層的工作量,針對這一點建議保留Example,如果不保留可能還需要寫更多的動態SQL才能完成工作,這樣程式碼自動生成工具的價值就體現不出來了。

因為自動生成程式碼的時候會覆蓋檔案,所以建議把手寫的動態SQL和自動生成的分成2個Mapper.xml檔案,這樣資料庫新增欄位或有其他修改的時候重新生成Mapper.xml不會影響我們手寫的動態SQL。

  • 執行maven命令

    右鍵專案–RunAS-Maven build-輸入mybatis-generator:generate指令 點選Run 即可成功相關程式碼。