Gradleプラグイン

概要

Komapperが提供するGradleプラグインは、 データベースのメタデータから次の2種類のKotlinソースコードを生成します。

  • エンティティクラス
  • マッピング定義

エンティティクラスやマッピング定義については エンティティクラス を参照ください。

利用方法

プラグインの最新版は Gradleプラグインのポータルのサイト で確認できます。

下記のコードはプラグインを利用したGradleビルドスクリプトの例です。

buildscript {
    repositories {
        mavenCentral()
    }
    // TestcontainersとPostgreSQLのJDBCドライバへの依存を定義する
    dependencies {
        classpath(platform("org.testcontainers:testcontainers-bom:1.17.1"))
        classpath("org.testcontainers:postgresql")
        classpath("org.postgresql:postgresql:42.3.4")
    }
}

// Komapperプラグインの利用を宣言する
plugins {
  id("org.komapper.gradle") version "1.4.0"
}

// Komapperプラグインに関する設定を行う
komapper {
    generators {
        // 利用するデータベースごとにregisterブロックに適当な名前をつけてブロック内に設定を記述する
        register("postgresql") {
            val initScript = file("src/main/resources/init_postgresql.sql")
            // JDBCパラメータの設定。Testcontainers上のPostgreSQLを利用する
            jdbc {
                driver.set("org.testcontainers.jdbc.ContainerDatabaseDriver")
                url.set("jdbc:tc:postgresql:13.3:///test?TC_INITSCRIPT=file:${initScript.absolutePath}")
                user.set("test")
                password.set("test")
            }
            packageName.set("org.komapper.example.postgresql")
            overwriteEntities.set(true)
            overwriteDefinitions.set(true)
        }
    }
}

上記の設定をした上で下記のコマンドを実行するとエンティティクラスやマッピング定義のコードを生成できます。

$ ./gradlew komapperGenerator

registerに指定した名前を明示しても同じ結果が得られます。

$ ./gradlew komapperPostgresqlGenerator

サンプルアプリケーション も参考にしてください。

パラメータ一覧

registerブロック内で設定可能なパラメータを示します。

jdbc.driver

JDBCドライバのクラス名を表します。

設定必須です。

jdbc.url

JDBCのURLを表します。

設定必須です。

jdbc.user

JDBCのユーザーを表します。

jdbc.password

JDBCのパスワードを表します。

catalog

データベースのメタデータ取得に使われるカタログです。

この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。

schemaPattern

データベースのメタデータ取得に使われるスキーマのパターンです。

SALES%のようにLIKE述語と同様の記述ができます。

この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。

tableNamePattern

データベースのメタデータ取得に使われるテーブルのパターンです。

JOB%のようにLIKE述語と同様の記述ができます。

この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。

tableTypes

データベースのメタデータ取得に使われるテーブルタイプです。

デフォルトの値はTABLEのみを含んだリストです。 このパラメータは以下のような値を含むことができます。

  • TABLE
  • VIEW

この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。

destinationDir

生成されるKotlinソースコードの出力先です。

デフォルトの値はsrc/main/kotlinです。

packageName

生成されるエンティティクラスやマッピング定義クラスのパッケージ名です。

prefix

生成されるエンティティクラスの単純名のプレフィックスです。

デフォルトの値は空文字です。

suffix

生成されるエンティティクラス名のサフィックスです。

デフォルトの値は空文字です。

overwriteEntities

生成されるエンティティクラスのソースコードを上書きするかどうかを表します。

デフォルトの値はfalseです。

overwriteDefinitions

生成されるマッピング定義のソースコードを上書きするかどうかを表します。

デフォルトの値はfalseです。

declareAsNullable

生成されるエンティティクラスの全プロパティをNULL許容型として宣言するかどうかを表します。

デフォルトの値はfalseです。 この値がfalseの場合、 NULL許容型として宣言するかどうかはプロパティごとにデータベースのメタデータから判定します。

useCatalog

生成されるマッピング定義でカタログ名を明示するかどうかを表します。

デフォルトの値はfalseです。

useSchema

生成されるマッピング定義でスキーマ名を明示するかどうかを表します。

デフォルトの値はfalseです。

propertyTypeResolver

生成されるエンティティクラスのプロパティの型を決定するリゾルバです。

デフォルト値はorg.komapper.codegen.PropertyTypeResolver.of()です。

enquote

SQLの識別子を引用符で囲むことを行う関数です。

デフォルト値はorg.komapper.codegen.Enquote.of()です。

classNameResolver

生成されるエンティティクラスの名前を決定するリゾルバです。

デフォルト値はorg.komapper.codegen.ClassNameResolver.of(prefix, suffix)です。

propertyNameResolver

生成されるエンティティクラスのプロパティの名前を決定するリゾルバです。

デフォルト値はorg.komapper.codegen.PropertyNameResolver.of()です。

最終更新 September 17, 2022: Add v1.4 (23eb572)