天天看點

IDEA-快速生成實體類

自定義配置生成帶注釋注解的實體類

一、 連接配接資料庫

從右側點選Database打開資料庫工具視窗,

或者從菜單View→Tool Windows→Database打開資料庫工具視窗。

點選Database工具視窗左上角添加按鈕“+”

IDEA-快速生成實體類

,選擇資料庫類型,這裡以MySQL為例

填寫資料庫連接配接的主機名、資料庫名、使用者名和密碼。

點選Test Connection按鈕進行測試資料庫連接配接是否正常。

二、 編輯Generate POJOs.groovy

在資料庫工具視窗右鍵=》Scripted Extensions=》Go to Scripts Directory

打開Generate POJOs.groovy所在位置,也可以建立自定義配置。

IDEA-快速生成實體類
IDEA-快速生成實體類
IDEA-快速生成實體類

我的Generate POJOs.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.util.Date

import java.text.SimpleDateFormat

packageName = “”

typeMapping = [

(~/(?i)tinyint|bool|bit/) : “Boolean”,

(~/(?i)int/) : “Long”,

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

(~/(?i)datetime|timestamp/) : “Date”,

(~/(?i)date/) : “java.sql.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)

packageName = getPackageName(dir)

// 設定編碼為utf-8

new File(dir, className + “.java”).withPrintWriter(“utf-8”) { out -> generate(out, className, fields, table) }

}

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

out.println “package $packageName”

out.println “”

out.println “”

out.println “import lombok.Data;”

out.println “”

out.println “import com.ogawa.health.framework.core.data.BaseEntity;”

out.println “import javax.persistence.Column;”

out.println “”

out.println “import javax.persistence.Table;”

out.println “import javax.persistence.Id;”

out.println “import java.util.Date;”

out.println “”

out.println “”

}

if (it.annos != “”) out.println " KaTeX parse error: Can't use function '\"' in math mode at position 101: …@Column(name = \̲"̲{it.filed}")"

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,

filed: col.getName(),

annos: “”,

commoent: col.getComment()

]]

}

}

def isNotEmpty(content) {

return content != null && content.toString().trim().length() > 0

}

def getPackageName(dir) {

return dir.toString().replaceAll("\\", “.”).replaceAll("^.*src(\.main\.java\.)?", “”) + “;”

}

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]

}

三、 生成實體類

在資料庫工具視窗,選擇要生成實體類的表,右鍵=》Scripted Extensions=》選擇之前的配置檔案,選擇實體類的目标目錄。完成。

展示:

IDEA-快速生成實體類

繼續閱讀