ステップ 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 起動ファイルを起動すると、対応するディレクトリにファイルが生成されます