步骤1:打开Database窗格,新建数据库连接

数据库连接默认只是当前工程使用,想要所有IDEA窗口共享

步骤2:编辑groovy脚本

步骤3:选择一张或多张表,生成代码

生成效果

附:groovy脚本
import com.intellij.database.model.DasTable
import com.intellij.database.model.ObjectKind
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
config = [
impSerializable : true,
extendBaseEntity : false,
extendBaseService: true,
useLombok : true, // 使用注解,不生成get、set方法
ModelNotNULL : true, // 空值不返回注解
ModelDate : true, // 日期类格式注解
baseMethods : true, // ServiceImpl生成基础方法
generateItem : [
"Entity",
"Service",
"ServiceImpl",
"Repository",
"RepositoryCustom",
"RepositoryImpl",
"Controller",
"SOA",
"Constants",
"Config",
]
]
baseEntityProperties = ["id", "CreatedOn", "LastChangedOn", "version"]
typeMapping = [
(~/(?i)bool|boolean|tinyint/) : "Boolean",
(~/(?i)bigint/) : "Long",
(~/int/) : "Integer",
(~/(?i)float|double|decimal|real|numeric/): "java.math.BigDecimal",
(~/(?i)datetime|timestamp/) : "java.util.Date",
(~/(?i)date/) : "java.util.Date",
(~/(?i)time/) : "java.sql.Time",
(~/(?i)/) : "String"
]
FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
SELECTION.filter {
it instanceof DasTable && it.getKind() == ObjectKind.TABLE
}.each {
generate(it, dir)
}
}
// 生成对应的文件
def generate(table, dir) {
def entityPath = "${dir.toString()}\\entity",
servicePath = "${dir.toString()}\\service",
serviceImplPath = "${dir.toString()}\\service\\impl",
repPath = "${dir.toString()}\\dao",
controllerPath = "${dir.toString()}\\controller",
constantsPath = "${dir.toString()}\\constants",
configPath = "${dir.toString()}\\config"
mkdirs([entityPath, servicePath, serviceImplPath, repPath, controllerPath, constantsPath, configPath])
System.out.println(table.getName())
def entityName = javaName(table.getName(), true)
def fields = calcFields(table)
def basePackage = clacBasePackage(dir)
if (isGenerate("Entity")) {
genUTF8FileEntity(entityPath, "${entityName}.java").withPrintWriter { out -> genEntity(out, table, entityName, fields, basePackage) }
}
if (isGenerate("Service")) {
// genUTF8FileOtherEntity(servicePath, "${entityName}Service.java").withPrintWriter { out -> genService(out, table, entityName, fields, basePackage) }
}
if (is

该文介绍如何在IDEA中创建数据库连接并使其在所有窗口中共享,然后利用Groovy脚本自动化生成包括实体类、Service、Repository等在内的代码结构,涉及配置项如日期格式、注解使用等。
最低0.47元/天 解锁文章
1649

被折叠的 条评论
为什么被折叠?



