Skip to content

Instantly share code, notes, and snippets.

@gvdenbro
Last active July 18, 2018 12:56
Show Gist options
  • Save gvdenbro/2c9aaf091caf3cbc54fc32f55d4f0b58 to your computer and use it in GitHub Desktop.
Save gvdenbro/2c9aaf091caf3cbc54fc32f55d4f0b58 to your computer and use it in GitHub Desktop.
querydsl sql codegen with custom types
import groovy.sql.Sql
configurations {
sqlcodegen
}
dependencies {
sqlcodegen("com.querydsl:querydsl-sql-codegen:4.x.x")
sqlcodegen("some.driver.jar")
}
task generateQuerydslSql() {
doLast {
def loader = GroovyObject.class.classLoader
configurations.sqlcodegen.each { File file ->
loader.addURL(file.toURI().toURL())
}
Sql.withInstance(
'jdbc:url',
'user',
'pwd',
'some driver') { Sql sql ->
def exporter = loader.loadClass("com.querydsl.sql.codegen.MetaDataExporter").newInstance()
def templates = loader.loadClass("com.querydsl.sql.MySQLTemplates").newInstance()
def configuration = loader.loadClass("com.querydsl.sql.Configuration").newInstance([templates].toArray())
// register custom types
configuration.register(loader.loadClass("com.querydsl.sql.types.JSR310LocalDateTimeType").newInstance())
configuration.register(loader.loadClass("com.querydsl.sql.types.JSR310LocalDateType").newInstance())
exporter.setConfiguration(configuration)
exporter.setNamePrefix('S')
exporter.setPackageName('some.package')
exporter.setTableNamePattern('somecommaseperatedtablenames')
exporter.setTargetFolder(file('src/main/java')) // oooh my god! Heresy! Burn him!
exporter.export(sql.getConnection().getMetaData())
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment