idea package自动生成_IDEA自动生成pojo实体类模板

-由于直接用idea的自动实体生成,他的包名是不会变的,而且类型也不是自己想要的,这里把我一直用的这份模板分享出来

点击你需要的表右键——>选择下图的Go to Scripts Directory——>在项目的目录就会显示,把以下的模板替换进去即可。

模板:

import com.intellij.database.model.DasTable

import com.intellij.database.util.Case

import com.intellij.database.util.DasUtil

/*

* Available context bindings:

* SELECTION Iterable

* PROJECT project

* FILES files helper

*/

typeMapping = [

(~/(?i)int/) : "Integer",

(~/(?i)float|double|decimal|real/): "Double",

(~/(?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 }.each { generate(it, dir) }

}

def generate(table, dir) {

def className = javaName(table.getName(), true)

def fields = calcFields(table)

new File(dir, className + ".java").withPrintWriter { out -> generate(dir,out, className, fields) }

}

def generate(dir,out, className, fields) {

out.println "package " + dir.getAbsolutePath().split("main.java.")[1].replace("\\", ".").replaceAll("/", ".") + ";"

out.println ""

out.println "import lombok.Data;"

out.println ""

out.println "@Data"

out.println "public class $className {"

out.println ""

fields.each() {

if (it.annos != "") out.println " ${it.annos}"

out.println " private ${it.type} ${it.name};"

}

out.println ""

out.println "}"

}

def calcFields(table) {

DasUtil.getColumns(table).reduce([]) { fields, col ->

def spec = Case.LOWER.apply(col.getDataType().getSpecification())

def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value

fields += [[

name : javaName(col.getName(), false),

type : typeStr,

annos: ""]]

}

}

def javaName(str, capitalize) {

def s = com.intellij.psi.codeStyle.NameUtil.splitNameIntoWords(str)

.collect { Case.LOWER.apply(it).capitalize() }

.join("")

.replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")

capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]

}

效果如图:

——感谢浏览♥

你可能感兴趣的:(idea,package自动生成)