经常写一些业务代码,学会快速生成项目上业务代码所需的类entity、dao、service类对我们提高工作效率很有帮助,整理步骤如下:
一、准备工作
在idea中连接数据库
下载idea的CodeMaker插件
二、生成实体类
准备生成实体类的groovy脚本,这里我直接用写好了的脚本,因为不懂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.io.*
import java.text.SimpleDateFormat
import java.lang.*;
/*
* Available context bindings:
* SELECTION Iterable
* PROJECT project
* FILES files helper
*/
packageName = ""
typeMapping = [
(~/(?i)bigint/) : "Long",
(~/(?i)int|tinyint|smallint|mediumint/) : "Integer",
(~/(?i)bool|bit/) : "Boolean",
(~/(?i)float|double|decimal|real/) : "Double",
(~/(?i)datetime|timestamp|date|time/) : "Date",
(~/(?i)blob|binary|bfile|clob|raw|image/): "InputStream",
(~/(?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 className = javaName(table.getName(), true)
def fields = calcFields(table)
packageName = getPackageName(dir)
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(dir, className + ".java")), "UTF-8"))
printWriter.withPrintWriter {out -> generate(out, className, fields,table)}
// new File(dir, className + ".java").withPrintWriter { out -> generate(out, className, fields,table) }
}
// 获取包所在文件夹路径
def getPackageName(dir) {
return dir.toString().replaceAll("\\\\", ".").replaceAll("/", ".").replaceAll("^.*src(\\.main\\.java\\.)?", "") + ";"
}
def generate(out, className, fields,table) {
out.println "package $packageName"
out.println ""
out.println "import com.yunhuakeji.component.base.annotation.doc.ApiField;"
out.println "import com.yunhuakeji.component.base.annotation.entity.Code;"
out.println "import com.yunhuakeji.component.base.bean.entity.base.BaseEntity;"
out.prin