コードジェネレーターの設定
MyBatis-Plus コードジェネレータは強力なツールであり、データベーステーブル構造に基づいて対応するエンティティクラス、Mapperインターフェース、XMLマッピングファイル、およびService層のコードを自動生成することができます。このツールは、MyBatisフレームワークに基づく開発プロセスを大幅に簡素化し、開発効率を向上させます。特に大量のデータベーステーブルを扱う必要がある場合に効果的です。
主要な特徴
- 自動化: コードジェネレーターは、データベースのテーブル構造に基づいて自動的に対応するJavaコードを生成し、手動での繰り返しコード記述作業を削減します。
- 設定の柔軟性: 設定ファイルまたはコードを通じて、生成されるコードのパッケージパス、テーブル名、フィールド名、テンプレートなどを柔軟に指定でき、様々なプロジェクトの要件に対応します。
- テンプレートサポート: カスタムコードテンプレートをサポートしており、プロジェクトの要件に応じてコードスタイルと構造をカスタマイズできます。
- マルチデータベースサポート: MySQL、Oracle、SQL Serverなど、様々なデータベースタイプをサポートしており、対応するデータベース接続情報を設定するだけで利用できます。
- 簡単な統合: 既存のプロジェクトに簡単に統合でき、数行のコードでコード生成プロセスを開始できます。
使用场景
- 新規プロジェクト構築:新規プロジェクト開始時に、コードジェネレータを使用して基本的なCRUDコードを迅速に生成し、プロジェクトの立ち上げ速度を向上させます。
- テーブル構造変更:データベースのテーブル構造が変更された場合、コードジェネレータを使用して対応するJavaコードを更新し、コードとデータベースの一貫性を維持します。
- 反復作業:多数の類似したCRUD操作を作成する必要がある場面で、コードジェネレータは反復作業を大幅に削減し、開発効率を向上させます。
使用方法
- データソースの設定:データベースの種類、接続URL、ユーザー名、パスワードなどを指定します。
- 戦略の設定:コード生成対象のテーブルを選択し、テーブル名やフィールド名の命名規則などを設定します。
- パッケージ情報の設定:生成されるコードのパッケージパスを設定します。エンティティクラス、Mapperインターフェース、Serviceなどを含みます。
- テンプレートの設定:コードスタイルをカスタマイズする必要がある場合は、カスタムコードテンプレートを設定または作成できます。
- 生成の実行:コードジェネレーターを実行し、設定に基づいて対応するJavaコードを生成します。
サンプルコード
import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.rules.DbType;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class CodeGenerator {
public static void main(String[] args) { // グローバル設定 GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java") // 出力ディレクトリを設定 .setAuthor("Your Name") // 作成者を設定 .setOpen(false) // 生成後にディレクトリを自動的に開くかどうかを設定 .setFileOverride(true) // ファイルが存在する場合に上書きするかどうかを設定 .setServiceName("%sService") // Serviceインターフェース名のサフィックスを設定 .setIdType(IdType.AUTO) // 主キー生成戦略を設定 .setSwagger2(true); // Swaggerアノテーションを生成するかどうかを設定
// データソース設定 DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL) // データベースタイプを設定 .setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&serverTimezone=UTC") // データベース接続URL .setUsername("root") // データベースユーザー名 .setPassword("password") // データベースパスワード .setDriverName("com.mysql.cj.jdbc.Driver"); // データベースドライバークラス名
// 戦略設定 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setInclude("user", "order") // コード生成対象のテーブル名を指定 .setNaming(NamingStrategy.underline_to_camel) // テーブル名からクラス名への変換戦略を設定 .setColumnNaming(NamingStrategy.underline_to_camel) // カラム名からプロパティ名への変換戦略を設定 .setEntityLombokModel(true) // エンティティクラスでLombokモデルを使用するかどうかを設定 .setRestControllerStyle(true) // ControllerでRESTスタイルを使用するかどうかを設定 .setTablePrefix(new String[]{"tbl_"}); // テーブル名のプレフィックスを設定
// パッケージ設定 PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent("com.example") // 親パッケージ名を設定 .setMapper("mapper") // Mapperインターフェースが配置されるサブパッケージ名を設定 .setEntity("entity") // エンティティクラスが配置されるサブパッケージ名を設定 .setController("controller") // Controllerが配置されるサブパッケージ名を設定 .setService("service") // Serviceが配置されるサブパッケージ名を設定 .setXml("mapper"); // Mapper XMLファイルが配置されるサブパッケージ名を設定
// テンプレート設定 TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setXml(null) // XMLファイルを生成しない .setController("templates/controller.java.vm") // Controllerテンプレートパスを設定 .setEntity("templates/entity.java.vm") // エンティティクラステンプレートパスを設定 .setMapper("templates/mapper.java.vm"); // Mapperインターフェーステンプレートパスを設定
// 設定の統合 AutoGenerator autoGenerator = new AutoGenerator(); autoGenerator.setGlobalConfig(globalConfig) .setDataSource(dataSourceConfig) .setStrategy(strategyConfig) .setPackageInfo(packageConfig) .setTemplate(templateConfig);
// 生成の実行 autoGenerator.execute(); }}
MyBatis-Plusコードジェネレーターを使用することで、開発者は煩雑なCRUDコードの記述ではなく、ビジネスロジックの実装に集中できるようになり、開発効率とコード品質の向上が図れます。
基本設定
データソース設定(dataSource)
- タイプ:
DataSourceConfig
- デフォルト値:
null
データソース設定は、コード生成の対象となる具体的なデータベースを指定するために使用します。データソースを設定することで、コードジェネレータはデータベースに接続し、テーブル構造情報を取得して、対応するコードを生成することができます。
設定例:
DataSourceConfig dataSourceConfig = new DataSourceConfig();dataSourceConfig.setDbType(DbType.MYSQL) // データベースタイプを設定(MySQL、Oracleなど) .setUrl("jdbc:mysql://localhost:3306/mybatis_plus") // データベース接続URL .setUsername("root") // データベースユーザー名 .setPassword("password") // データベースパスワード .setDriverName("com.mysql.cj.jdbc.Driver"); // データベースドライバークラス名
データベーステーブル設定(strategy)
- タイプ:
StrategyConfig
- デフォルト値:
null
データベーステーブル設定は、どのテーブルのコードを生成するか、またはどのテーブルを除外するかを指定するために使用されます。ストラテジー設定を通じて、コード生成の範囲を柔軟に制御できます。
設定例:
StrategyConfig strategyConfig = new StrategyConfig();strategyConfig.setInclude("user", "order") // コード生成対象のテーブル名を指定 .setExclude("user_detail") // コード生成から除外するテーブル名を指定 .setEntityLombokModel(true) // エンティティクラスでLombokモデルを使用するように設定 .setRestControllerStyle(true); // ControllerでRESTスタイルを使用するように設定
包名配置(packageInfo)
- タイプ:
PackageConfig
- デフォルト値:
null
パッケージ名の設定は、生成されるコードのパッケージパスを指定するために使用されます。パッケージ名を設定することで、生成されたコードが正しいディレクトリ構造に配置されることを保証します。
設定例:
PackageConfig packageConfig = new PackageConfig();packageConfig.setParent("com.example") // 親パッケージ名を設定 .setMapper("mapper") // Mapperインターフェースが配置されるサブパッケージ名を設定 .setEntity("entity") // エンティティクラスが配置されるサブパッケージ名を設定 .setController("controller"); // Controllerが配置されるサブパッケージ名を設定
テンプレート設定(template)
- タイプ:
TemplateConfig
- デフォルト値:
null
テンプレート設定により、コード生成のテンプレートをカスタマイズし、個別の操作を実現できます。テンプレート設定を通じて、生成されるコードのフォーマットと内容をカスタマイズすることが可能です。
設定例:
TemplateConfig templateConfig = new TemplateConfig();templateConfig.setXml(null) // XMLファイルを生成しない .setController("templates/controller.java.vm") // Controllerテンプレートのパスを設定 .setEntity("templates/entity.java.vm") // エンティティクラステンプレートのパスを設定 .setMapper("templates/mapper.java.vm"); // Mapperインターフェーステンプレートのパスを設定
グローバル戦略設定(globalConfig)
- タイプ:
GlobalConfig
- デフォルト値:
null
グローバル戦略設定は、作成者情報や生成パスなど、いくつかのグローバルな設定を提供します。
設定例:
GlobalConfig globalConfig = new GlobalConfig();globalConfig.setOutputDir("src/main/java") // 生成コードの出力ディレクトリを設定 .setAuthor("Your Name") // 作成者情報を設定 .setOpen(false) // 生成後に自動的にディレクトリを開くかどうかを設定 .setFileOverride(true); // ファイルが存在する場合に上書きするかどうかを設定
注入配置(injectionConfig)
- タイプ:
InjectionConfig
- デフォルト値:
null
注入設定により、カスタムパラメータの注入などの操作を行い、個別のカスタマイズ操作を実現できます。注入設定を通じて、コード生成プロセスに追加のロジックを組み込むことが可能です。
設定例:
InjectionConfig injectionConfig = new InjectionConfig() { // カスタム注入パラメータ @Override public void initMap() { // to do nothing }
// カスタムパラメータ @Override public MappedStatement injectMappedStatement(MappedStatement ms, Configuration configuration, SqlSource sqlSource, String mapperId) { // カスタム注入ロジック return ms; }};
上記の設定により、MyBatis-Plus コードジェネレータはプロジェクト構造に適合したコードを生成することができ、開発効率を大幅に向上させます。最適なコード生成効果を得るために、実際のプロジェクト要件に応じて設定パラメータを調整することを忘れないでください。
データソース設定(dataSource)の詳細
データソース設定は MyBatis-Plus コードジェネレータの重要な部分であり、データベースへの接続方法とデータベース情報の照会方法を定義します。以下に、データソース設定の詳細な説明と例を示します。
dbQuery
- 説明: データベース情報クエリクラス。データベースクエリ操作を実行するために使用されます。
- デフォルト実装:
dbType
に基づいて、対応するデータベースの組み込み実装を自動的に選択します。 - カスタマイズ:
IDbQuery
インターフェースを実装することで、特定の内容を返すためのデータベースクエリ SQL 文をカスタマイズできます。
dbType
- 説明: データベースの種類。必須で設定する必要があるオプションです。
- 組み込みサポート: MyBatis-Plus は MySQL、Oracle、PostgreSQL など、様々な一般的なデータベースタイプを組み込みでサポートしています。
schemaName
- 説明: データベースのスキーマ名。PostgreSQL などの一部のデータベースシステムでは、この指定が必要です。
- 例: PostgreSQL では、
public
を指定できます。
typeConvert
- 説明: 型変換。データベースのフィールド型を Java の型に変換するために使用されます。
- デフォルト実装:
dbType
に基づいて、対応するデータベースの組み込み実装を自動的に選択します。 - カスタマイズ: 組み込みの変換タイプが要件を満たさない場合、
ITypeConvert
インターフェースを実装してデータベースフィールド型から Java 型への変換をカスタマイズするか、IColumnType
インターフェースを実装してより高度なカスタマイズを行うことができます。
url
- 説明: データベース接続の URL で、データベースへの接続に必要なすべての情報が含まれています。
driverName
- 説明: データベース接続を確立するために使用される、データベースドライバーの名前です。
username
- 説明: データベース接続のユーザー名。認証に使用されます。
password
- 説明: データベース接続のパスワード。認証に使用されます。
サンプル設定
DataSourceConfig dataSourceConfig = new DataSourceConfig();dataSourceConfig.setDbType(DbType.MYSQL) // データベースタイプを MySQL に設定 .setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&serverTimezone=UTC") // データベース接続 URL を設定 .setUsername("root") // データベースユーザー名を設定 .setPassword("password") // データベースパスワードを設定 .setDriverName("com.mysql.cj.jdbc.Driver"); // データベースドライバー名を設定
このサンプルでは、MySQL データベースのデータソースを設定しています。データベースタイプ、接続 URL、ユーザー名、パスワード、およびドライバー名を指定しています。これらの情報は、データベースとの接続を確立し、テーブル構造情報を取得して、対応する Java コードを生成するために使用されます。
実際のデータベース設定に合わせてこれらのパラメータを調整し、ご利用のデータベース環境と一致することを確認してください。
データベーステーブル設定(strategy)の詳細
データベーステーブル設定は、コード生成時にデータベースのテーブルとフィールドをどのように処理するかを定義するために使用されます。戦略設定を通じて、どのテーブルのコードを生成するか、エンティティクラスとフィールドをどのように命名するか、および特定のアノテーションや属性を含めるかどうかを指定できます。
isCapitalMode
- 説明: 大文字命名モードを使用するかどうか。
- デフォルト値:
false
skipView
- 説明: ビューをスキップするかどうかを指定します。
- デフォルト値:
false
naming
- 説明: データベーステーブルをエンティティにマッピングする際の命名戦略。
- デフォルト値: アンダースコアからキャメルケースへの変換を使用します。
columnNaming
- 説明: データベーステーブルのフィールドをエンティティにマッピングする際の命名戦略です。
- デフォルト値: 指定されていない場合、
naming
戦略に従って実行されます。
tablePrefix
- 説明: テーブルプレフィックス。特定のプレフィックスを持つテーブルのみをフィルタリングするために使用されます。
fieldPrefix
- 説明: フィールドのプレフィックス。特定のプレフィックスを持つフィールドをフィルタリングするために使用されます。
superEntityClass
- 説明: カスタム継承する Entity クラスの完全修飾名(パッケージ名付き)。
superEntityColumns
- 説明: 基本的な Entity クラスをカスタマイズし、共通フィールドを定義します。
superMapperClass
- 説明: カスタムで継承された Mapper クラスの完全修飾名(パッケージ名付き)を指定します。
superServiceClass
- 説明: 継承するカスタム Service クラスの完全修飾名(パッケージ名を含む)を指定します。
superServiceImplClass
- 説明: 継承するカスタム ServiceImpl クラスの完全修飾名(パッケージ名を含む)。
superControllerClass
- 説明: カスタム継承コントローラークラスの完全修飾名(パッケージ名付き)。
enableSqlFilter Since 3.3.1
- 説明: デフォルトで SQL のあいまいテーブル名マッチングを有効にします。無効にした場合、
likeTable
とnotLikeTable
は機能しなくなり、include
とexclude
はメモリフィルタリングを使用します。 - デフォルト値:
true
- 注意: SQL 構文の互換性の問題がある場合は、手動で
false
に設定してください。使用できない既知のケースとしては、MyCat ミドルウェアが含まれます。詳細は ISSUE-2102 をご確認ください。
include
- 説明: 含めるテーブル名を指定します。
enableSqlFilter
がfalse
の場合、正規表現が使用できます。
likeTable Since 3.3.0
- 説明: テーブル名のあいまい一致。notLikeTable とどちらか一方を設定します。
exclude
- 説明: 除外する必要があるテーブル名を指定します。
enableSqlFilter
がfalse
の場合、正規表現が許可されます。
notLikeTable Since 3.3.0
- 説明:テーブル名のあいまい除外。likeTable とどちらか一方を設定します。
entityColumnConstant
- 説明: 【エンティティ】フィールド定数を生成するかどうか。
- デフォルト値:
false
entityBuilderModel @Deprecated
- 説明: 【エンティティ】がビルダーモデルであるかどうか。
- デフォルト値:
false
- 注意: バージョン 3.3.2 以降、chainModel に名称が変更されました。
chainModel Since 3.3.2
- 説明:【エンティティ】がチェーンモデルかどうか。
- デフォルト値:
false
- 注意:バージョン3.3.2以下ではデフォルトでチェーンモデルが生成されていましたが、3.3.2以降ではデフォルトでは生成されません。必要な場合は有効にしてください。
entityLombokModel
- 説明:【エンティティ】が Lombok モデルであるかどうかを指定します。
- デフォルト値:
false
entityBooleanColumnRemoveIsPrefix
- 説明: Boolean型フィールドからisプレフィックスを除去するかどうか。
- デフォルト値:
false
restControllerStyle
- 説明:
@RestController
コントローラーを生成します。 - デフォルト値:
false
controllerMappingHyphenStyle
- 説明: キャメルケースをハイフン区切りに変換します。
- デフォルト値:
false
entityTableFieldAnnotationEnable
- 説明: エンティティ生成時にフィールドのアノテーションを生成するかどうか。
- デフォルト値:
false
versionFieldName
- 説明: 楽観的ロック属性名。
logicDeleteFieldName
- 説明: 論理削除フィールド名。
tableFillList
- 説明: テーブルフィールドの自動入力設定を返します。
サンプル設定
StrategyConfig strategyConfig = new StrategyConfig();strategyConfig.setCapitalMode(true) // 大文字命名モードを使用 .setEntityLombokModel(true) // Lombokモデルを使用 .setRestControllerStyle(true) // @RestControllerコントローラーを生成 .setInclude("user", "order") // 特定のテーブルを含める .setExclude("user_detail") // 特定のテーブルを除外 .setEntityBooleanColumnRemoveIsPrefix(true) // Boolean型フィールドのisプレフィックスを削除 .setTablePrefix("tbl_") // テーブルプレフィックスを設定 .setControllerMappingHyphenStyle(true); // キャメルケースをハイフン区切りに変換
このサンプルでは、大文字命名モード、Lombokモデルの使用、RESTスタイルのコントローラーの生成を指定し、含めるテーブルと除外するテーブルを設定した戦略を構成しています。また、テーブルプレフィックスとキャメルケースからハイフン区切りへのコントローラーマッピングスタイルも設定しています。
プロジェクトの要件に応じてこれらの設定パラメータを調整し、生成されるコードが期待通りになるようにしてください。
包名配置(packageInfo)详解
包名配置は、生成されるコードのパッケージ構造を定義するために使用され、生成されたコードが正しいディレクトリに配置されることを保証します。パッケージ名を設定することで、コードの構成方法を制御し、プロジェクトのアーキテクチャ設計に適合させることができます。
parent
- 説明: 親パッケージ名。生成されるすべてのコードの最上位パッケージ名を指定します。
- デフォルト値: 設定されていない場合、各サブパッケージ名に対して完全なパッケージパスを指定する必要があります。
moduleName
- 説明: 親パッケージのモジュール名。異なるモジュールやサブシステムを区別するために使用されます。
entity
- 説明: Entity パッケージ名、つまりエンティティクラスが配置されているパッケージ名です。
service
- 説明: Service パッケージ名、つまりサービスインターフェースが配置されているパッケージ名です。
serviceImpl
- 説明: Service Impl のパッケージ名。サービス実装クラスが配置されるパッケージ名です。
mapper
- 説明: Mapper パッケージ名、つまり Mapper インターフェースが配置されているパッケージ名です。
xml
- 説明: Mapper XML パッケージ名、つまり Mapper XML ファイルが配置されているパッケージ名です。
controller
- 説明: Controller パッケージ名、つまりコントローラークラスが配置されるパッケージ名です。
pathInfo
- 説明: パス設定情報。生成されるコードの物理的なパスを指定するために使用されます。
サンプル設定
PackageConfig packageConfig = new PackageConfig();packageConfig.setParent("com.example") // 親パッケージ名を設定 .setModuleName("mybatisplus") // 親パッケージモジュール名を設定 .setEntity("entity") // エンティティクラスが配置されるサブパッケージ名を設定 .setService("service") // サービスインターフェースが配置されるサブパッケージ名を設定 .setServiceImpl("service.impl") // サービス実装クラスが配置されるサブパッケージ名を設定 .setMapper("mapper") // Mapperインターフェースが配置されるサブパッケージ名を設定 .setXml("mapper") // Mapper XMLファイルが配置されるサブパッケージ名を設定 .setController("controller"); // コントローラークラスが配置されるサブパッケージ名を設定
このサンプルでは、親パッケージ名を com.example
とするパッケージ構造を設定しています。各サブパッケージ名はその機能に応じて設定されています。例えば、エンティティクラスは com.example.mybatisplus.entity
パッケージに、サービスインターフェースは com.example.mybatisplus.service
パッケージに配置されます。
生成されたコードがプロジェクトに正しく統合されるように、プロジェクトの構造や組織の慣習に応じてこれらの設定パラメータを調整してください。
テンプレート設定(template)詳細
テンプレート設定により、開発者はコードジェネレータが使用するテンプレートをカスタマイズし、特定のプロジェクトスタイルと要件に合致したコードを生成することができます。MyBatis-Plus コードジェネレータは、エンティティクラス、サービスクラス、Mapperインターフェース、XMLマッピングファイル、コントローラクラスなど、複数種類のテンプレートをサポートしています。
entity
- 説明: Java エンティティクラスのテンプレート。Java エンティティクラスのコード生成に使用されます。
entityKt
- 説明: Kotlin エンティティクラステンプレート。Kotlin エンティティクラスのコード生成に使用されます。
service
- 説明: Service クラステンプレート。サービスインターフェースコードを生成するために使用されます。
serviceImpl
- 説明: Service impl 実装クラステンプレート。サービス実装クラスのコード生成に使用されます。
mapper
- 説明: Mapperインターフェースコードを生成するためのmapperテンプレートです。
xml
- 説明: mapper xml テンプレート。Mapper XML マッピングファイルのコード生成に使用されます。
controller
- 説明: controller コントローラーテンプレート。コントローラークラスのコード生成に使用されます。
サンプル設定
TemplateConfig templateConfig = new TemplateConfig();templateConfig.setEntity("templates/entity.java.vm") // エンティティクラスのテンプレートパスを設定 .setService("templates/service.java.vm") // サービスクラスのテンプレートパスを設定 .setServiceImpl("templates/serviceImpl.java.vm") // サービス実装クラスのテンプレートパスを設定 .setMapper("templates/mapper.java.vm") // Mapperインターフェースのテンプレートパスを設定 .setXml("templates/mapper.xml.vm") // Mapper XMLのテンプレートパスを設定 .setController("templates/controller.java.vm"); // コントローラーのテンプレートパスを設定
このサンプルでは、異なるタイプのテンプレートパスを設定しています。例えば、エンティティクラスのテンプレートパスは templates/entity.java.vm
に、サービスクラスのテンプレートパスは templates/service.java.vm
に設定されています。これらのテンプレートパスは、プロジェクト内のカスタムテンプレートファイルを指しており、コードジェネレーターはこれらのテンプレートを使用して対応するコードを生成します。
テンプレートファイルのパスが正しいこと、およびテンプレートファイルが Velocity や Freemarker などのテンプレートエンジンの構文に従っていることを確認してください。カスタムテンプレートを使用することで、生成されるコードの構造、コメント、命名スタイルなどを制御し、プロジェクトの特定の要件を満たすことができます。
実際の使用では、プロジェクトの具体的な状況に応じてテンプレート設定を調整する必要があるかもしれません。例えば、プロジェクトで Kotlin 言語を使用している場合は、entityKt
テンプレートパスを設定する必要があります。特定のタイプのコード(XMLマッピングファイルなど)を生成する必要がない場合は、対応するテンプレートを設定しないこともできます。
グローバル戦略設定(globalConfig)の詳細
グローバル戦略設定は、出力ディレクトリ、ファイル上書き、開発者情報などのグローバルな設定、および Kotlin モード、Swagger2 連携、ActiveRecord モードなどの高度なオプションを提供します。
outputDir
- 説明: 生成ファイルの出力ディレクトリ。
- デフォルト値:
D ドライブのルートディレクトリ
fileOverride
- 説明: 既存ファイルを上書きするかどうか。
- デフォルト値:
false
open
- 説明: 生成後に出力ディレクトリを自動的に開くかどうか。
- デフォルト値:
true
enableCache
- 説明: XML に 2 次キャッシュの設定を追加するかどうか。
- デフォルト値:
false
author
- 説明:開発者名。
- デフォルト値:
null
kotlin
- 説明: Kotlin モードを有効にするかどうか。
- デフォルト値:
false
swagger2
- 説明: Swagger2 モードを有効にするかどうか。
- デフォルト値:
false
activeRecord
- 説明: ActiveRecord モードを有効にするかどうか。
- デフォルト値:
false
baseResultMap
- 説明: BaseResultMap を有効にするかどうか。
- デフォルト値:
false
baseColumnList
- 説明: baseColumnList を有効にするかどうか。
- デフォルト値:
false
dateType
- 説明: 時間型に対応する戦略。
- デフォルト値:
TIME_PACK
entityName
- 説明: エンティティの命名方式。
%s
はプレースホルダーです。 - デフォルト値:
null
- 例:
%sEntity
はUserEntity
を生成します
mapperName
- 説明: Mapperの命名方式。
%s
はプレースホルダーです。 - デフォルト値:
null
- 例:
%sDao
はUserDao
を生成します
xmlName
- 説明: Mapper XML の命名方式。
%s
はプレースホルダーです。 - デフォルト値:
null
- 例:
%sDao
はUserDao.xml
を生成します
serviceName
- 説明: Service の命名方式。
%s
はプレースホルダーです。 - デフォルト値:
null
- 例:
%sBusiness
はUserBusiness
を生成します
serviceImplName
- 説明: Service実装クラスの命名方式。
%s
はプレースホルダーです。 - デフォルト値:
null
- 例:
%sBusinessImpl
はUserBusinessImpl
を生成します
controllerName
- 説明: Controller の命名方式。
%s
はプレースホルダーです。 - デフォルト値:
null
- 例:
%sAction
と指定するとUserAction
が生成されます
idType
- 説明: 生成される主キーのIDタイプを指定します。
- デフォルト値:
null
サンプル設定
GlobalConfig globalConfig = new GlobalConfig();globalConfig.setOutputDir("src/main/java") // 出力ディレクトリを設定 .setFileOverride(true) // 既存ファイルの上書きを許可 .setOpen(false) // 出力ディレクトリを自動的に開かない .setEnableCache(true) // XMLにセカンダリキャッシュ設定を追加 .setAuthor("Your Name") // 開発者名を設定 .setKotlin(false) // Kotlinモードを有効にしない .setSwagger2(true) // Swagger2モードを有効化 .setActiveRecord(false) // ActiveRecordモードを有効にしない .setBaseResultMap(true) // BaseResultMapを有効化 .setBaseColumnList(true) // baseColumnListを有効化 .setDateType(DateType.TIME_PACK) // 時間型対応戦略を設定 .setEntityName("%sEntity") // エンティティ命名方式を設定 .setMapperName("%sDao") // Mapper命名方式を設定 .setXmlName("%sDao") // Mapper XML命名方式を設定 .setServiceName("%sService") // Service命名方式を設定 .setServiceImplName("%sServiceImpl") // Service impl命名方式を設定 .setControllerName("%sController") // Controller命名方式を設定 .setIdType(IdType.AUTO); // 主キーIDタイプを自動増分に設定
このサンプルでは、グローバル戦略を設定し、出力ディレクトリ、ファイル上書き、開発者情報などを指定し、各種命名方式と主キーIDタイプを設定しています。これらの設定は、生成されるコードの構造と内容に影響を与えます。
プロジェクトの要件と好みに応じて、これらの設定パラメータを調整してください。生成されるコードが期待通りになるようにするためです。例えば、生成されるエンティティクラス名を Entity
で終わらせたい場合は、entityName
を %sEntity
に設定できます。生成されるXMLファイルにセカンダリキャッシュ設定を含めたい場合は、enableCache
を true
に設定できます。
注入配置(injectionConfig)详解
注入設定により、開発者はコードジェネレーターの動作をカスタマイズできます。これには、カスタム返却設定、カスタム出力ファイル、カスタムファイル作成ロジックなどが含まれます。これらの設定は柔軟性を提供し、コードジェネレーターがより複雑なプロジェクト要件に対応できるようにします。
map
- 説明: カスタム返却設定 Map オブジェクト。このオブジェクトはテンプレートエンジンに渡され、
cfg.xxx
を通じて参照できます。 - 用途: テンプレート内でカスタム設定情報にアクセスするために使用されます。
fileOutConfigList
- 説明: カスタム出力ファイルを設定します。
FileOutConfig
を構成してテンプレートファイルと出力ファイルを指定し、カスタムファイルの生成を実現します。 - 用途: 標準形式以外のファイルを生成する場合や、特定のディレクトリにファイルを生成する場合に使用します。
fileCreate
- 説明: ファイルを作成するかどうかをカスタム判定します。
IFileCreate
インターフェースを実装します。 - 用途: 特定のクラスを上書き作成する必要があるかどうかの判断、またはファイル差分アルゴリズム
merge
の実装に使用します。
initMap
- 説明: カスタム Map オブジェクトを注入します。
setMap
メソッドを使用して設定する必要があることに注意してください。 - 用途: コードジェネレーター内で追加の設定情報を注入するために使用されます。
サンプル設定
InjectionConfig injectionConfig = new InjectionConfig() { @Override public void initMap() { // カスタム Map オブジェクト。テンプレート内で cfg.xxx として参照可能 this.setMap(new HashMap<String, Object>() {{ put("author", "Your Name"); put("project", "MyBatis-Plus Code Generator"); }}); }
@Override public FileOutConfig getFileOutConfig(TableInfo tableInfo) { // カスタム出力ファイル設定 return new FileOutConfig(tableInfo.getEntityName()) { @Override public String outputFile(TableInfo tableInfo) { // カスタム出力ファイルパス return "src/main/java/" + tableInfo.getEntityName() + ".java"; } }; }
@Override public IFileCreate getFileCreate() { // カスタムファイル作成ロジック return new IFileCreate() { @Override public boolean isCreate(File file) { // ファイル作成の要否を判断するカスタムロジック return !file.exists() || file.length() == 0; } }; }};
このサンプルでは、注入設定を構成しています。カスタム Map オブジェクト、カスタム出力ファイル設定、およびカスタムファイル作成ロジックが含まれます。
initMap
メソッドでは、著者とプロジェクト名を含む Map オブジェクトを作成しています。これらの情報はテンプレート内でcfg.xxx
として参照できます。getFileOutConfig
メソッドでは、カスタムのFileOutConfig
オブジェクトを返し、出力ファイルのパスを指定しています。getFileCreate
メソッドでは、カスタムのIFileCreate
実装を返し、ファイルを作成する必要があるかどうかを判断するために使用しています。
生成されるコードが期待通りになるように、これらの設定パラメータをプロジェクトの要件に合わせて調整してください。例えば、テンプレートで追加の設定情報にアクセスする必要がある場合は、initMap
メソッドでこれらの情報を追加できます。特定の形式のファイルを生成する必要がある場合は、getFileOutConfig
メソッドで対応するテンプレートと出力パスを指定できます。ファイル作成ロジックをカスタマイズする必要がある場合は、getFileCreate
メソッドで対応する判断ロジックを実装できます。