激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

2020-08-01 00:26熊本一郎 Java教程

這篇文章主要介紹了IDEA POJO開(kāi)發(fā)神器之Groovy的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

暫時(shí)只對(duì) MySQL進(jìn)行了測(cè)試

項(xiàng)目使用 Lombok MyBatis-Plus

一:使用步驟首先在項(xiàng)目右側(cè)找到 DataBase 如圖 沒(méi)有請(qǐng)參考 idea中database不顯示問(wèn)題

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

2.點(diǎn)開(kāi)之后進(jìn)行數(shù)據(jù)庫(kù)連接(注意沒(méi)有驅(qū)動(dòng)的請(qǐng)下載相關(guān)數(shù)據(jù)庫(kù)驅(qū)動(dòng))具體步驟如圖

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

點(diǎn)開(kāi) + 號(hào)

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

選擇Date Source

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

找到相應(yīng)的數(shù)據(jù)庫(kù) 這里我使用的是 mysql

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

如果沒(méi)有 Dirver 請(qǐng)下載 idea 會(huì)在窗口左下角給提示(這里具體在什么位置我也記不清楚)輸入相關(guān)連接信息

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

過(guò)程中出現(xiàn)任何問(wèn)題,請(qǐng)?jiān)诹粞詤^(qū)留言(萌新基本全天在線)連接上之后如果沒(méi)有需要的數(shù)據(jù)可以點(diǎn)擊如下圖方式

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

先設(shè)置groovy

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

替換(有些地方需要注意,具體看下方源碼)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import com.intellij.database.model.DasTable
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
 
import java.time.LocalDate
 
/*
 * Available context bindings:
 * SELECTION Iterable<DasObject>
 * PROJECT  project
 * FILES  files helper
 */
 
// 此處指定包路徑,路徑需要自行維護(hù);
packageName = "com.qgy.web.entity;"
// 此處指定對(duì)應(yīng)的類型映射,可按需修改,目前tinyint如果要映射到自定義枚舉類型,只能手動(dòng)修改
typeMapping = [
  (~/(?i)bigint/)     : "Long",
  (~/(?i)int/)      : "Integer",
  (~/(?i)tinyint/)     : "Boolean",
  (~/(?i)float|double|decimal|real/): "BigDecimal",
  (~/(?i)time|datetime|timestamp/) : "LocalDateTime",
  (~/(?i)date/)      : "LocalDate",
  (~/(?i)/)       : "String"
]
 
// 上面用到類和它的導(dǎo)入路徑的之間的映射
importMap = [
  "BigDecimal" : "java.math.BigDecimal",
  "LocalDate" : "java.time.LocalDate",
  "LocalDateTime": "java.time.LocalDateTime",
]
 
// 導(dǎo)入路徑列表,下面引用的時(shí)候會(huì)去重,也可以直接聲明成一個(gè) HashSet
importList = []
 
// 彈出選擇文件的對(duì)話框
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) + "Entity"
 def fields = calcFields(table)
 new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(dir, className + ".java")), "utf-8")).withPrintWriter { out -> generate(out, className, fields, table) }
}
 
// 從這里開(kāi)始,拼實(shí)體類的具體邏輯代碼
def generate(out, className, fields, table) {
 out.println "package $packageName"
 out.println ""
 // 引入所需的包
 out.println "import lombok.Data;"
 out.println "import lombok.EqualsAndHashCode;"
 out.println "import lombok.experimental.Accessors;"
 out.println "import com.baomidou.mybatisplus.annotation.*;"
 out.println "import java.io.Serializable;"
 // 去重后導(dǎo)入列表
 importList.unique().each() { pkg ->
  out.println "import " + pkg + ";"
 }
 out.println ""
 // 添加類注釋
 out.println "/**"
 // 如果添加了表注釋,會(huì)加到類注釋上
 if (isNotEmpty(table.getComment())) {
  out.println " * " + table.getComment()
 }
 out.println " *"
 out.println " * @author 輸入作者"
 out.println " * @date " + LocalDate.now()
 out.println " */"
 // 添加類注解
 out.println "@Data"
 out.println "@EqualsAndHashCode(callSuper = false)"
 out.println "@Accessors(chain = true)"
 out.println "@TableName(\"${table.getName()}\")"
 out.println "public class $className implements Serializable {"
 out.println ""
 out.println genSerialID()
 boolean isId = true
 // 遍歷字段,按下面的規(guī)則生成
 fields.each() {
  // 輸出注釋
  if (isNotEmpty(it.comment)) {
   out.println "\t/**"
   out.println "\t * ${it.comment}"
   out.println "\t */"
  }
  // 這邊默認(rèn)第一個(gè)字段為主鍵,實(shí)際情況大多數(shù)如此,遇到特殊情況可能需要手動(dòng)修改
  if (isId) {
   out.println "\t@TableId(type = IdType.AUTO)"
   isId = false
  }
  if ((it.annos + "").indexOf("[@Id]") >= 0) out.println "\t@Id"
 
  if (it.annos != "") out.println " ${it.annos.replace("[@Id]", "")}"
 
  out.println "\tprivate ${it.type} ${it.name};"
  out.println ""
 }
 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
  if (importMap.containsKey(typeStr)) {
   importList.add(importMap.get(typeStr))
  }
  fields += [[
       name : javaName(col.getName(), false),
       type : typeStr,
       comment: col.getComment(),
       annos : "\t@TableField(\"" + col.getName() + "\" )"
     ]]
 }
}
 
def isNotEmpty(content) {
 return content != null && content.toString().trim().length() > 0
}
 
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]
}
 
static String genSerialID() {
 return "\tprivate static final long serialVersionUID = " + Math.abs(new Random().nextLong()) + "L;"
}

選中需要的數(shù)據(jù)庫(kù),找到需要生成實(shí)體類的表這里我就隨便選擇一個(gè)。右鍵選擇

IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解

在左側(cè)列表找到文件名之后點(diǎn)擊會(huì)有彈窗選擇你要存放的地方點(diǎn)擊

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧洲成人免费 | 天天干天天碰 | 一级黄色免费大片 | 福利在线小视频 | 亚洲精品日韩欧美 | av视在线| 久久国产精品无码网站 | 国产激情精品一区二区三区 | 国产欧美亚洲精品 | 国产羞羞视频在线观看免费应用 | 欧美日韩国产一区二区三区在线观看 | 视频一区二区精品 | 香蕉久久久久久 | 特黄一区二区三区 | 欧美精品激情在线 | 久久亚洲春色中文字幕久久 | 欧美成人三级大全 | 欧美日韩精品一区二区三区不卡 | 在线免费观看麻豆 | 毛片三区 | 最新日韩精品在线观看 | 色在线视频网站 | 久久免费综合视频 | 精品在线视频播放 | 色99久久 | 国产91大片 | 国产精品色在线网站 | 日韩精品中文字幕一区二区 | 国产一国产一级毛片视频在线 | 91 免费视频| 一本色道久久综合亚洲精品图片 | 亚洲综合视频在线播放 | 黄色大片在线观看 | 国产成人在线视频播放 | 亚洲啊v在线观看 | 精品亚洲va在线va天堂资源站 | 日本aaaa片毛片免费观看视频 | 成年性羞羞视频免费观看 | 亚洲第一视频在线 | 少妇一级淫片免费放4p | 电影av在线 |