mybatis-generator プラグインは、注釈付きのエンティティ クラスを生成します

ステップ 1: springboot プロジェクトを作成し、pom.xml に依存関係を追加する

<dependency> 
    <groupId>org.mybatis.generator</groupId> 
    <artifactId>mybatis-generator-core</artifactId> 
    <version>1.3.6</version> 
</dependency> 
<dependency> 
    <groupId>mysql</ groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.38</version> 
</dependency>

ステップ 2: アノテーション付きプラグイン MyCommentGenerator をカスタマイズして生成し、 DefaultCommentGenerator を実装する

私のコード構造は次のとおりです。

 カスタムクラスは次のとおりです。

import java.text.SimpleDateFormat; 
java.util.Date をインポートします。
java.util.Properties をインポートします。

org.mybatis.generator.api.IntrospectedColumn をインポートします。
org.mybatis.generator.api.IntrospectedTable をインポートします。
org.mybatis.generator.api.dom.java.* をインポートします。
org.mybatis.generator.api.dom.xml.XmlElement をインポートします。
org.mybatis.generator.config.MergeConstants をインポートします。
org.mybatis.generator.config.PropertyRegistry をインポートします。
org.mybatis.generator.internal.DefaultCommentGenerator をインポートします。
org.mybatis.generator.internal.util.StringUtility をインポートします。

/** 
 * @desc 自定义生成带注释的插件
 * @date 2022-04-07 
 
 */  
public class MyCommentGenerator extends DefaultCommentGenerator {
    private Properties properties; 
    プライベート プロパティ
    プライベートブールのsuppressDate; 
    プライベート ブール値のsuppressAllComments; 
    プライベート文字列 currentDateStr; 

    public MyCommentGenerator() {
        スーパー(); 
        プロパティ = 新しいプロパティ(); 
        systemPro = System.getProperties(); 
        抑制日 = false; 
        suppressAllComments = false; 
        currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()); 
    } 
    @Override 
    public void addJavaFileComment(CompilationUnit compilationUnit) { 
        // デフォルトではファイル レベルのコメントを追加しません
        return; 
    *
 
    /**
     適切なコメントを追加して、要素が生成されたことをユーザーに警告します。
     * 生成されたとき。
     */ 
    @Override 
    public void addComment(XmlElement xmlElement) { 
        return; 
    } 
    @Override 
    public void addRootComment(XmlElement rootElement) { 
        // デフォルトではドキュメント レベルのコメントを追加しません
        return; 
    } 
    @Override 
    public void addConfigurationProperties(プロパティ プロパティ) { 
        this.properties.putAll(プロパティ); 

        suppressDate = StringUtility.isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE)); 

        suppressAllComments = StringUtility.isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS));
    } 

    /** 
     * このメソッドは、カスタム javadoc タグを追加します。* Javadoc タグを含めたくない場合は、何もしないでください
     。ただし、* Javadoc タグを含めない場合
     、Eclipse プラグインの
     * Java マージ機能が機能しなくなります。
     * 
     * @param javaElement Java 要素
     */ 
    @Override 
    protected void addJavadocTag(JavaElement javaElement, boolean markAsDoNotDelete) { 
        javaElement.addJavaDocLine(" *"); 
        if (markAsDoNotDelete) { 
            sb.append(" do_not_delete_during_merge");
        StringBuilder sb = new StringBuilder();
        sb.append(" * "); 
        sb.append(MergeConstants.NEW_ELEMENT_TAG);  
    protected String getDateString() {
        }
        文字列 s = getDateString(); 
        if (s != null) { 
            sb.append(' '); 
            sb.append(s); 
        } 
        javaElement.addJavaDocLine(sb.toString()); 
    } 

    /** 
     * このメソッドは、Javadoc タグおよび XML コメントに含める
     * 書式設定された日付文字列を返します。* これらのドキュメント要素に日付が必要ない場合は、null を返すことができます
     * 
     * @return 現在のタイムスタンプを表す文字列、または null 
     */ 
    @Override
            結果 = currentDateStr; 
        }
        文字列結果 = null; 
        if (!suppressDate) {
        結果を返します。
    } 
    @Override 
    public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) { 
        if (suppressAllComments) { 
            return; 
        } 
        StringBuilder sb = new StringBuilder(); 
        innerClass.addJavaDocLine("/**"); 
        sb.append(" * "); 
        sb.append(introspectedTable.getFullyQualifiedTable()); 
        sb.append(" "); 
        sb.append(getDateString()); 
        innerClass.addJavaDocLine(sb.toString()); 
        innerClass.addJavaDocLine(" */"); 
    public 
    void addEnumComment(InnerEnum innerEnum, 
        if (suppressAllComments) { 
            return; 
        } 

        StringBuilder sb = new StringBuilder(); 

        innerEnum.addJavaDocLine("/**"); 
        // addJavadocTag(innerEnum, false); 
        sb.append(" * "); 
        sb.append(introspectedTable.getFullyQualifiedTable()); 
        innerEnum.addJavaDocLine(sb.toString()); 
        innerEnum.addJavaDocLine(" */"); 
    } 
    @Override 
    public void addFieldComment(フィールド フィールド、IntrospectedTable introspectedTable、
                                IntrospectedColumn introspectedColumn) {
        if (suppressAllComments) { 
            return; 
        } 

        StringBuilder sb = new StringBuilder(); 

        field.addJavaDocLine("/**"); 
        sb.append(" * "); 
        sb.append(introspectedColumn.getRemarks()); 
        field.addJavaDocLine(sb.toString()); 

        // addJavadocTag(field, false); 

        field.addJavaDocLine(" */"); 
    } 
    @Override 
    public void addFieldComment(フィールド フィールド、IntrospectedTable introspectedTable) { 
        if (suppressAllComments) { 
            return; 
        } 

        StringBuilder sb = new StringBuilder(); 

        field.addJavaDocLine("/**");
        sb.append(" * "); 
        sb.append(introspectedTable.getFullyQualifiedTable()); 
        field.addJavaDocLine(sb.toString()); 
        field.addJavaDocLine("
    } 
    @Override 
    public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { 

    } 
    @Override 
    public void addGeneralMethodComment(メソッド メソッド、IntrospectedTable introspectedTable) { 
        if (suppressAllComments) { 
            return; 
        } 
        // method.addJavaDocLine("/**"); 
        // addJavadocTag(メソッド, false); 
        // method.addJavaDocLine(" */"); 
    } 
    @Override 
    public void addGetterComment(メソッド メソッド、IntrospectedTable introspectedTable、
                                 IntrospectedColumn introspectedColumn) { 
        if (suppressAllComments) { 
            return; 
        } 

        method.addJavaDocLine("/**"); 

        StringBuilder sb = new StringBuilder(); 
        sb.append(" * "); 
        sb.append(introspectedColumn.getRemarks()); 
        method.addJavaDocLine(sb.toString()); 

        sb.setLength(0); 
        sb.append(" * @return "); 
        sb.append(introspectedColumn.getActualColumnName()); 
        sb.append(" "); 
        sb.append(introspectedColumn.getRemarks()); 
        method.addJavaDocLine(sb.toString()); 

        // addJavadocTag(メソッド, false); 

        method.addJavaDocLine(" */"); 
    } 
    @Override 
    public void addSetterComment(メソッド メソッド、IntrospectedTable introspectedTable、 
                                 IntrospectedColumn introspectedColumn) { 
        if (suppressAllComments) {
            リターン; 
        } 


        method.addJavaDocLine("/**"); 
        StringBuilder sb = new StringBuilder(); 
        sb.append(" * "); 
        sb.append(introspectedColumn.getRemarks()); 
        method.addJavaDocLine(sb.toString()); 

        パラメータ parm = method.getParameters().get(0); 
        sb.setLength(0); 
        sb.append(" * @param "); 
        sb.append(parm.getName()); 
        sb.append(" "); 
        sb.append(introspectedColumn.getRemarks());
        method.addJavaDocLine(sb.toString()); 

        // addJavadocTag(メソッド, false);

        method.addJavaDocLine(" */"); 
    } 
    @Override 
    public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) { 
        if (suppressAllComments) { 
            return; 
        } 

        StringBuilder sb = new StringBuilder(); 

        innerClass.addJavaDocLine("/**"); 
        sb.append(" * "); 
        sb.append(introspectedTable.getFullyQualifiedTable()); 
        innerClass.addJavaDocLine(sb.toString()); 

        sb.setLength(0); 
        sb.append(" * @author "); 
        sb.append(systemPro.getProperty("user.name"
        sb.append(" "); 
        sb.append(currentDateStr); 

        // addJavadocTag(innerClass, markAsDoNotDelete); 

        innerClass.addJavaDocLine(" */"); 
    }

 ステップ 3: generatorConfig.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> 
    <!--データベース ドライバー--> 
    <classPathEntry location="D:\Repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java- 5.1.38.jar"/> 
        <context id="MySQLTables" targetRuntime="MyBatis3"> <!--type 属性 custom は、注釈付きエンティティ クラスを生成するための CommentGenerator インターフェイスを実装します --> 
        <commentGenerator type="com.local .testmodule .mybatis.MyCommentGenerator"> 
        </commentGenerator>
        <!--データベース リンク アドレス アカウント パスワード--> 
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
         
                        connectionURL="jdbc:mysql://127.0.0.0/test"
                        userId="xxxxxx" password="xxxxxxxx"> 
    </jdbcConnection> 
    <javaTypeResolver> 
        <property name="forceBigDecimals" value="false"/> 
    </javaTypeResolver> 
    <!--ここにモデル クラスの格納場所を生成します targetProject プロジェクトの場合これはマルチモジュールであり、コードが src/main/java の下でどのモジュールを生成する必要があるかを明確にする必要があります --> 
        <javaModelGenerator targetPackage="com.local.testmodule.entity.dto" targetProject="testmodule-service/ src/main/java"> 
            <property name="enableSubPackages" value="true"/> 
            <property name="trimStrings" value="true"/> 
        </javaModelGenerator> 
        <!-- マッピング ファイルの保存場所を生成する -->
        <sqlMapGenerator targetPackage="mappers" targetProject="testmodule-service/src/main/resources"> 
            <property name="enableSubPackages" value="true"/> 
        </sqlMapGenerator> 
        <!-- 生成Dao类存放位置-- > 
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.local.testmodule.mapper" targetProject="testmodule-service/src/main/java"> 
            <property name="enableSubPackages" value="true"/> 
        </javaClientGenerator > 
        <!-- 生成対応表およびクラス名--> 
        <table tableName="tableName" domainObjectName="pojoName" enableCountByExample="true"enableUpdateByExample="true" 
               enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
            < generatedKey column="id" sqlStatement="Mysql"/> 
        </table> 
    </context> 
</generatorConfiguration>

上記の構成ファイルの重要なポイント: 1) カスタム クラスの実装を参照して、上記のように注釈付きのエンティティ クラスを生成します:                                         commentGenerator タグの type 属性

                                  2) データベース ドライバー jar パッケージをロードし、ローカル ウェアハウス jar パッケージのパスを構成して、最初のステップの jar パッケージがダウンロードされ、それに依存していることを確認します。

                                  3) 生成されたファイルのパス構成では、targetProject が特定のモジュールの下に構成されていることに注意してください。

ステップ 4: スタートアップ ファイルを追加する: スタートアップ ファイルの場所は次のとおりです。

​​​​​​​

 起動ファイルのコードは次のとおりです。

org.mybatis.generator.api.MyBatisGenerator をインポートします。
org.mybatis.generator.config.Configuration をインポートします。
org.mybatis.generator.config.xml.ConfigurationParser をインポートします。
org.mybatis.generator.internal.DefaultShellCallback をインポートします。

java.io.InputStream をインポートします。
import java.util.ArrayList;
java.util.List をインポートします。

/**
 * 自動コード生成エントリ
 */
public class MyBatisGeneratorRun {     public static void main(String[] args) throws Exception{         MyBatisGeneratorRun app = new MyBatisGeneratorRun();         app.generator();     }



    public void generator() throws Exception{

        List<String> 警告 = 新しい ArrayList<String>();
        ブール上書き = true;
        InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("generatorConfig.xml");
        ConfigurationParser cp = 新しい ConfigurationParser(警告);
        構成 config = cp.parseConfiguration(resourceAsStream);
        DefaultShellCallback コールバック = 新しい DefaultShellCallback(上書き);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);

        for(String warning:warnings){             System.out.println(warning);         }     }


}

ステップ 5: 上記の MyBatisGeneratorRun 起動ファイルを起動すると、対応するディレクトリにファイルが生成されます

おすすめ

転載: blog.csdn.net/weixin_48363639/article/details/124019744