均带实体类注释和字段注释
(每个人的代码风格习惯 稍有不同,自行更改即可)
dao/mapper service controller基本上一样 些许改动
entity生成代码脚本如下:
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
/*
* Available context bindings:
* SELECTION Iterable<DasObject>
* PROJECT project
* FILES files helper
*/
packageName = ""
comment = ""
typeMapping = [
(~/(?i)tinyint|smallint|mediumint/) : "Integer",
(~/(?i)int/) : "Long",
(~/(?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)
comment=table.getComment();
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 java.io.Serializable;"
out.println "import com.test.mybatisplus.annotation.IdType;"
out.println "import com.test.mybatisplus.annotation.TableId;"
out.println "import com.fasterxml.jackson.databind.annotation.JsonSerialize;"
out.println "import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;"
out.println "import com.test.common.core.web.domain.BaseEntity;"
out.println "import lombok.AllArgsConstructor;"
out.println "import lombok.Data;"
out.println "import lombok.NoArgsConstructor;"
out.println "import lombok.experimental.Accessors;"
Set types = new HashSet()
def commonNames = ['createBy', 'createTime', 'updateBy', 'updateTime', 'delFlag','remark']
fields.each() {
if (it.name in commonNames) {
} else {
types.add(it.type)
}
}
if (types.contains("Date")) {
out.println "import java.util.Date;"
out.println "import org.springframework.format.annotation.DateTimeFormat;"
out.println "import com.fasterxml.jackson.annotation.JsonFormat;"
}
if (types.contains("InputStream")) {
out.println "import java.io.InputStream;"
}
out.println ""
out.println "/**\n" +
" * @Description $comment \n" +
" * @Author lily \n" +
" * @Date "+ new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " \n" +
" */"
out.println ""
out.println "@Data"
out.println "@NoArgsConstructor"
out.println "@AllArgsConstructor"
out.println "@Accessors(chain = true)"
out.println "public cl