diff --git a/README.md b/README.md index 7feaa39..64ee277 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Feature -- Generate code for database table, column and association. +- Generate code for table, column and association from database or ddl. - Incremental compile for dto language (apt/ksp). - Add implementation (spring-boot-start/sql/sql-kotlin) for dependencies. - Add annotationProcessor/ksp for dependencies. @@ -98,6 +98,8 @@ jimmer { ![Static Badge](https://img.shields.io/badge/-MariaDB-gray?style=flat-square&logo=mariadb&logoColor=white) ![Static Badge](https://img.shields.io/badge/-MySQL-gray?style=flat-square&logo=mysql&logoColor=white) +### From Database + ```kotlin import cn.enaium.jimmer.gradle.extension.Association import cn.enaium.jimmer.gradle.extension.Driver @@ -109,7 +111,7 @@ plugins { dependencies { //... - implementation("org.postgresql:postgresql:42.6.0")//require jdbc driver + runtimeOnly("org.postgresql:postgresql:42.6.0")//require jdbc driver } jimmer { @@ -123,7 +125,6 @@ jimmer { url.set("jdbc:postgresql://localhost:5432/postgres") username.set("postgres") password.set("postgres") -// ddl.set(file("src/main/resources/schema.sql"))// if you set ddl, driver, url, username, password can be ignored // catalog.set("postgres") // schemaPattern.set("public") // tableNamePattern.set("t_%") @@ -143,6 +144,22 @@ jimmer { } ``` +### From DDL + +```kotlin +jimmer { + generator { + target { + srcDir.set("src/main/kotlin") + packageName.set("cn.enaium") + } + jdbc { + ddl.set(file("src/main/resources/schema.sql")) + } + } +} +``` + ### Association(Only Gradle Project Plugin) You must add the suffix '_id'(`primaryKey.set("id")`) to the column name if the column is a fake foreign key, otherwise diff --git a/gradle.properties b/gradle.properties index 9e780aa..a0181c2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ kotlin.code.style=official -version=0.0.26 \ No newline at end of file +version=0.0.27 \ No newline at end of file diff --git a/src/main/kotlin/cn/enaium/jimmer/gradle/extension/Driver.kt b/src/main/kotlin/cn/enaium/jimmer/gradle/extension/Driver.kt index f57ac19..4f95159 100644 --- a/src/main/kotlin/cn/enaium/jimmer/gradle/extension/Driver.kt +++ b/src/main/kotlin/cn/enaium/jimmer/gradle/extension/Driver.kt @@ -28,5 +28,5 @@ enum class Driver(val className: String, val module: String) { HYPERSONIC("org.hsqldb.jdbc.JDBCDriver", "hsqldb"), ORACLE("oracle.jdbc.driver.OracleDriver", "ojdbc"), DB2("com.ibm.db2.jcc.DB2Driver", "jcc"), - SQL_SERVER("com.microsoft.sqlserver.jdbc.SQLServerDriver", "mssql-jdbc"), + SQLSERVER("com.microsoft.sqlserver.jdbc.SQLServerDriver", "mssql-jdbc"), } \ No newline at end of file diff --git a/src/main/kotlin/cn/enaium/jimmer/gradle/task/GenerateEntityTask.kt b/src/main/kotlin/cn/enaium/jimmer/gradle/task/GenerateEntityTask.kt index ace0b24..2c7141c 100644 --- a/src/main/kotlin/cn/enaium/jimmer/gradle/task/GenerateEntityTask.kt +++ b/src/main/kotlin/cn/enaium/jimmer/gradle/task/GenerateEntityTask.kt @@ -56,23 +56,28 @@ open class GenerateEntityTask : DefaultTask() { javaTypeMappings.putAll(generator.table.typeMappings.get()) } - val driver = - generator.jdbc.driver.takeIf { it.isPresent }?.get() ?: throw RuntimeException("Driver not configured") - configurations.named("runtimeClasspath").get() - .find { file -> file.name.startsWith(driver.module) } - ?.also { - DriverManager.registerDriver( - DiverWrapper( - Class.forName( - driver.className, true, - URLClassLoader(arrayOf(it.toURI().toURL()), this.javaClass.classLoader) - ).getConstructor() - .newInstance() as Driver + generator.jdbc.driver.takeIf { it.isPresent }?.also driver@{ driver -> + configurations.named("runtimeClasspath").get() + .find { file -> file.name.startsWith(driver.get().module) } + ?.also { + generator.jdbc.ddl.isPresent && return@also + DriverManager.registerDriver( + DiverWrapper( + Class.forName( + driver.get().className, true, + URLClassLoader(arrayOf(it.toURI().toURL()), this.javaClass.classLoader) + ).getConstructor() + .newInstance() as Driver + ) ) - ) - } ?: run { + } ?: run { + if (!generator.jdbc.ddl.isPresent) { + throw RuntimeException("Failed to find driver module") + } + } + } ?: run { if (!generator.jdbc.ddl.isPresent) { - throw RuntimeException("Failed to find driver module") + throw RuntimeException("Driver not configured") } } if (extension.language.get() == Language.KOTLIN) {