色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:139日期:2024-08-22 08:15:04

暫時只對 MySQL進(jìn)行了測試

項目使用 Lombok MyBatis-Plus

一:使用步驟首先在項目右側(cè)找到 DataBase 如圖 沒有請參考 idea中database不顯示問題

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

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

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

點開 + 號

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

選擇Date Source

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

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

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

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

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

過程中出現(xiàn)任何問題,請在留言區(qū)留言(萌新基本全天在線)連接上之后如果沒有需要的數(shù)據(jù)可以點擊如下圖方式

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

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

先設(shè)置groovy

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

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

import com.intellij.database.model.DasTableimport com.intellij.database.util.Caseimport com.intellij.database.util.DasUtilimport java.time.LocalDate/* * Available context bindings: * SELECTION Iterable<DasObject> * PROJECT project * FILES files helper */// 此處指定包路徑,路徑需要自行維護(hù);packageName = 'com.qgy.web.entity;'// 此處指定對應(yīng)的類型映射,可按需修改,目前tinyint如果要映射到自定義枚舉類型,只能手動修改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)入路徑列表,下面引用的時候會去重,也可以直接聲明成一個 HashSetimportList = []// 彈出選擇文件的對話框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) }}// 從這里開始,拼實體類的具體邏輯代碼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 '/**' // 如果添加了表注釋,會加到類注釋上 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)第一個字段為主鍵,實際情況大多數(shù)如此,遇到特殊情況可能需要手動修改 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ù)庫,找到需要生成實體類的表這里我就隨便選擇一個。右鍵選擇

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

在左側(cè)列表找到文件名之后點擊會有彈窗選擇你要存放的地方點擊🆗就行了,效果如下

package com.qgy.web.entity;import lombok.Data;import lombok.EqualsAndHashCode;import lombok.experimental.Accessors;import com.baomidou.mybatisplus.annotation.*;import java.io.Serializable;import java.time.LocalDateTime;/** * 超級管理員賬號信息表 * * @author rog * @date 2020-07-20 */@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)@TableName('sys_super')public class SysSuperEntity implements Serializable {private static final long serialVersionUID = 5132404354445122973L;/** * 主鍵id標(biāo)識 */@TableId(type = IdType.AUTO) @TableField('id' )private Integer id;/** * 管理員id唯一標(biāo)識 */ @TableField('account_id' )private String accountId;/** * 管理員賬號 */ @TableField('account' )private String account;/** * 管理員密碼 */ @TableField('account_password' )private String accountPassword;/** * 上一次登錄ip */ @TableField('account_ip_last' )private String accountIpLast;/** * 當(dāng)前登錄ip */ @TableField('account_ip_now' )private String accountIpNow;/** * 最近一次登錄時間 */ @TableField('login_time' )private LocalDateTime loginTime;/** * 是否啟用 */ @TableField('isEnable' )private Integer isEnable;}

到此這篇關(guān)于IDEA POJO開發(fā)神器之Groovy的使用的文章就介紹到這了,更多相關(guān)IDEA POJO Groovy內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: IDEA
相關(guān)文章:
主站蜘蛛池模板: 黄色a站| 精品国产午夜久久久久九九 | 18lxxlxx日本 | 免费女人18毛片a级毛片视频 | 亚洲一区二区三区中文字幕 | 美女操穴视频 | 台湾精品视频在线播放 | 日韩精品视频美在线精品视频 | 2019偷偷狠狠的日日 | 加勒比色综合久久久久久久久 | 精品久久中文字幕有码 | 久草福利资源在线观看 | 精品久久久久久中文字幕网 | 91欧美在线 | 久草综合视频在线 | 成年人色网站 | 国产或人精品日本亚洲77美色 | 国产精品变态重口在线 | 99精品福利视频 | 草草视频手机在线观看视频 | 加勒比一区二区 | 国产亚洲精品一区二区三区 | 欧洲一级视频 | 欧美三级三级三级爽爽爽 | 毛片在线视频观看 | 欧美片欧美日韩国产综合片 | 97视频在线播放 | 亚洲美女视频在线观看 | 日韩精品中文字幕一区三区 | 成人黄色一级片 | 黄色理论视频 | 中文字幕高清在线天堂网 | 欧美日产国产亚洲综合图区一 | 一级毛片在线播放免费 | 久久免费播放视频 | 欧美激情视频在线观看一区二区三区 | 91在线一区二区三区 | 黄影| 亚洲人在线播放 | 88av视频在线| 色视频网站大全免费 |