天天看點

mybatis generator 自動生成代碼(帶注釋的實體類)

使用前提:

當你開發的java 項目或新子產品的資料庫有N張表操作時,這時要自己寫實體類、dao、SqlMapper.xml等檔案,如果有多個表,就是造成時間浪費降低開發效率,是以建議使用mybatis generator 自動生成工具。可以自動幫助你生成java實體類、dao、mapper.xml等。

第一步:環境配置和pom.xml檔案

pom檔案中加入jar的引入

       <!-- mybatis逆向生成mapper和model -->

        <dependency>

            <groupId>org.mybatis.generator</groupId>

            <artifactId>mybatis-generator-core</artifactId>

            <version>1.3.5</version>

        </dependency>

第二步:建立mybatis-generator.xml檔案

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE generatorConfiguration

        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

    <!--指定特定資料庫的jdbc驅動jar包的位置-->

    <classPathEntry location="D:mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>

    <context id="default" targetRuntime="MyBatis3">

        <!-- optional,旨在建立class時,對注釋進行控制 -->

        <commentGenerator type="com.firehome.utils.MyCommentGenerator">

            <property name="suppressAllComments" value="true"/>

            <property name="suppressDate" value="true"/>

        </commentGenerator>

        <!--jdbc的資料庫連接配接 -->

        <jdbcConnection

                driverClass="com.mysql.jdbc.Driver"

                connectionURL="jdbc:mysql://localhost:3306/car"

                userId="root"

                password="123456">

        </jdbcConnection>

        <!-- 非必需,類型處理器,在資料庫類型和java類型之間的轉換控制-->

        <javaTypeResolver>

            <property name="forceBigDecimals" value="false"/>

        </javaTypeResolver>

        <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類

            targetPackage     指定生成的model生成所在的包名

            targetProject     指定在該項目下所在的路徑

        -->

        <javaModelGenerator targetPackage="com.firehome.jdc.patient.model"

                            targetProject=".\src\main\java">

            <!-- 是否允許子包,即targetPackage.schemaName.tableName -->

            <property name="enableSubPackages" value="true"/>

            <!-- 是否對model添加 構造函數 -->

            <property name="constructorBased" value="false"/>

            <!-- 是否對類CHAR類型的列的資料進行trim操作 -->

            <property name="trimStrings" value="true"/>

            <!-- 建立的Model對象是否 不可改變  即生成的Model對象不會有 setter方法,隻有構造方法 -->

            <property name="immutable" value="false"/>

        </javaModelGenerator>

        <!--Mapper映射檔案生成所在的目錄 為每一個資料庫的表生成對應的SqlMap檔案 -->

        <sqlMapGenerator targetPackage="com.firehome.jdc.patient.mapper"

                         targetProject=".\src\main\java">

            <property name="enableSubPackages" value="true"/>

        </sqlMapGenerator>

        <!-- 用戶端代碼,生成易于使用的針對Model對象和XML配置檔案 的代碼

                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對象

                type="MIXEDMAPPER",生成基于注解的Java Model 和相應的Mapper對象

                type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper接口(相當于dao層接口)

        -->

        <javaClientGenerator targetPackage="com.firehome.jdc.patient.mapper"

                             targetProject=".\src\main\java" type="XMLMAPPER">

            <property name="enableSubPackages" value="true"/>

        </javaClientGenerator>

        <table tableName="patient" domainObjectName="Patient">

               <!-- enableCountByExample="false" enableUpdateByExample="false"

               enableDeleteByExample="false" enableSelectByExample="tr"

               selectByExampleQueryId="true" -->

        </table>

    </context>

</generatorConfiguration>

使用注意點:

1、classPathEntry 中的location為資料庫連接配接驅動jar包  我用的是mysql-connector-java-5.1.38.jar ,目錄存放在自己電腦本地

2、commentGenerator 對生成的注釋進行控制(文尾提供檔案下載下傳)

該元素有一個可選屬性type,可以指定使用者的實作類,該類需要實作org.mybatis.generator.api.CommentGenerator接口。而且必有一個預設的構造方法。這個屬性接收預設的特殊值DEFAULT,會使用預設的實作類org.mybatis.generator.internal.DefaultCommentGenerator。

因為系統提供了一個預設的實作類,是以對我們來說,自己實作一個會很容易,最簡單的方法就是複制預設實作類代碼到一個新的檔案中,修改類名如

MyCommentGenerator

,在你自己的實作類中,你可以選擇是否繼續支援上面的兩個屬性,你還可以增加對其他屬性的支援。

修改

MyCommentGenerator中的方法addFieldComment即可:

public void addFieldComment(Field field,             IntrospectedTable introspectedTable,             IntrospectedColumn introspectedColumn) {

        if (introspectedColumn.getRemarks() != null && !introspectedColumn.getRemarks().equals("")) {             field.addJavaDocLine("");         }     }

3、jdbcConnection :jdbc的資料庫連接配接

4、javaModelGenerator 生成實體類的相關配置,targetPackage:類名、targetProject:位置

5、sqlMapGenerator 生成的SqlMappser檔案,

6、javaClientGenerator 生成的mapper接口

7、table 資料庫表名及實體類名叫啥

相關配置參考自:https://blog.csdn.net/isea533/article/details/42102297

第三步:生成代碼方式

自動生成有幾種方式,我們這兒直接跑代碼,看起來直接了當,執行下段代碼即可:

public class Test {

        public static void main(String[] args) {             args = new String[] { "-configfile", "src\\main\\resources\\mybatis-generator.xml", "-overwrite" };             ShellRunner.main(args);         } }

生成檔案的展示:

實體類:

mybatis generator 自動生成代碼(帶注釋的實體類)

mapper接口:

mybatis generator 自動生成代碼(帶注釋的實體類)

SqlMapper.xml:

mybatis generator 自動生成代碼(帶注釋的實體類)

4、除此之外,還會生成PatientExample,此類對單标的操作非常靈活,如果不想使用,删掉即可,或者配置的時候不生成Example類也可。(自己本人以前用過,這兒不寫過多)

繼續閱讀