成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

IDEA POJO開發神器之Groovy的使用詳解

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

暫時只對 MySQL進行了測試

項目使用 Lombok MyBatis-Plus

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

IDEA POJO開發神器之Groovy的使用詳解

2.點開之后進行數據庫連接(注意沒有驅動的請下載相關數據庫驅動)具體步驟如圖

IDEA POJO開發神器之Groovy的使用詳解

點開 + 號

IDEA POJO開發神器之Groovy的使用詳解

選擇Date Source

IDEA POJO開發神器之Groovy的使用詳解

找到相應的數據庫 這里我使用的是 mysql

IDEA POJO開發神器之Groovy的使用詳解

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

IDEA POJO開發神器之Groovy的使用詳解

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

IDEA POJO開發神器之Groovy的使用詳解

IDEA POJO開發神器之Groovy的使用詳解

先設置groovy

IDEA POJO開發神器之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 */// 此處指定包路徑,路徑需要自行維護;packageName = 'com.qgy.web.entity;'// 此處指定對應的類型映射,可按需修改,目前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']// 上面用到類和它的導入路徑的之間的映射importMap = [ 'BigDecimal' : 'java.math.BigDecimal', 'LocalDate' : 'java.time.LocalDate', 'LocalDateTime': 'java.time.LocalDateTime',]// 導入路徑列表,下面引用的時候會去重,也可以直接聲明成一個 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;' // 去重后導入列表 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 // 遍歷字段,按下面的規則生成 fields.each() { // 輸出注釋 if (isNotEmpty(it.comment)) { out.println 't/**' out.println 't * ${it.comment}' out.println 't */' } // 這邊默認第一個字段為主鍵,實際情況大多數如此,遇到特殊情況可能需要手動修改 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;'}

選中需要的數據庫,找到需要生成實體類的表這里我就隨便選擇一個。右鍵選擇

IDEA POJO開發神器之Groovy的使用詳解

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

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標識 */@TableId(type = IdType.AUTO) @TableField('id' )private Integer id;/** * 管理員id唯一標識 */ @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;/** * 當前登錄ip */ @TableField('account_ip_now' )private String accountIpNow;/** * 最近一次登錄時間 */ @TableField('login_time' )private LocalDateTime loginTime;/** * 是否啟用 */ @TableField('isEnable' )private Integer isEnable;}

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

標簽: IDEA
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
一本色道久久综合亚洲精品不| 一区二区三区中文字幕| 17c精品麻豆一区二区免费| gogo大胆日本视频一区| 欧美唯美清纯偷拍| 蜜桃91丨九色丨蝌蚪91桃色| 久久看片网站| 亚洲成人动漫在线观看| 亚洲电影自拍| 日韩一区二区三区在线| 亚洲中午字幕| 三级一区在线视频先锋| 亚洲欧洲精品一区二区三区波多野1战4| 久久久久久久久久电影| 久久久水蜜桃| 日韩亚洲欧美综合| 国产精品激情偷乱一区二区∴| 日本韩国一区二区| 奇米在线7777在线精品| 久久久亚洲综合| 久久国产一区二区| 久久国产剧场电影| 日韩电影在线观看网站| 亚洲三级在线免费| 美女一区二区久久| 色狠狠综合天天综合综合| 精品综合久久久久久8888| 91精品久久久久久久99蜜桃| 成人av午夜电影| 国产午夜精品在线观看| 91视频免费看| 综合在线观看色| 亚洲欧美日韩精品一区二区| 污片在线观看一区二区| 欧美日韩成人一区二区| 成人午夜在线免费| 国产亚洲一二三区| 久久久国际精品| 国产精品v欧美精品v日韩| 亚洲欧美国产77777| 久久大香伊蕉在人线观看热2| 日本欧美在线观看| 91精品国产免费久久综合| 成人福利电影精品一区二区在线观看 | 精品制服美女丁香| 日韩精品最新网址| 国产精品第十页| 亚洲国产成人porn| 欧美日韩久久一区| 日本欧美一区二区在线观看| 国产在线不卡一卡二卡三卡四卡| 日韩欧美一区在线| 欧美成人国产| 亚洲一区二区三区中文字幕 | 欧美日韩成人| 一区二区三区四区精品在线视频| 亚洲欧美日韩国产综合精品二区 | 久久国产精品一区二区三区四区 | 天天av天天翘天天综合网色鬼国产| 91福利视频在线| 国产.精品.日韩.另类.中文.在线.播放| 欧美xingq一区二区| 雨宫琴音一区二区在线| 日韩国产高清影视| 欧美mv日韩mv国产网站| 亚洲激情一区二区| 美女性感视频久久| 久久久久久97三级| 黑人精品欧美一区二区蜜桃| 日本一区二区在线不卡| 亚洲综合好骚| 国v精品久久久网| 夜夜亚洲天天久久| 欧美一区午夜视频在线观看| 永久久久久久| 精品一区二区三区影院在线午夜 | 欧美一级欧美三级在线观看| 亚洲婷婷在线| 老司机午夜精品| 国产欧美日韩不卡| 久久久国产精品一区二区三区| 国产精品亚洲一区二区三区妖精 | 亚洲一级影院| 麻豆极品一区二区三区| 国产女人18水真多18精品一级做| 国产精品一区二区三区四区五区| 九九九久久久精品| 国产精品国产三级国产aⅴ中文| 久久亚洲影院| 欧美精品国产一区| 蜜桃免费网站一区二区三区 | 精品一区在线看| 国产精品久久免费看| 欧美日韩国产在线观看| 亚洲国产精品一区二区第一页| 国产精品一区一区三区| 亚洲欧美另类图片小说| 日韩一级完整毛片| 媚黑女一区二区| 欧美福利在线| 激情成人午夜视频| 亚洲精品少妇30p| 精品播放一区二区| 在线观看www91| 亚洲国产精品一区在线观看不卡| 国产一区二区三区在线观看精品| **欧美大码日韩| 欧美一区二区三区色| 国产精品综合| 欧美色图麻豆| 懂色中文一区二区在线播放| 亚洲午夜久久久久中文字幕久| 精品久久国产字幕高潮| 色先锋资源久久综合| 国产综合色产| 成人影视亚洲图片在线| 日韩精品三区四区| 亚洲欧美日韩在线不卡| 久久久一区二区三区捆绑**| 在线观看不卡视频| 99国产精品| a4yy欧美一区二区三区| 久久精品久久综合| 亚洲国产另类av| 国产精品久久久久久久久快鸭| 欧美一级欧美三级在线观看| 老司机久久99久久精品播放免费| 亚洲一二三区在线| 欧美一区成人| 高清av一区二区| 日韩高清在线一区| 一区二区三区影院| 国产欧美中文在线| 欧美一二三区在线| 欧美午夜精品一区二区蜜桃| 99精品免费| 狠狠久久婷婷| 欧美在线亚洲| caoporen国产精品视频| 国产麻豆视频一区| 美女任你摸久久| 午夜视频一区在线观看| 国产精品福利影院| 国产人伦精品一区二区| 欧美一区二区精品| 欧美乱妇20p| 欧美影视一区二区三区| 可以看av的网站久久看| 国产精品久久久久久久免费软件| 亚洲午夜精品一区二区| 欧美久久电影| 91亚洲资源网| 成人网在线免费视频| 国产成a人亚洲| 国产露脸91国语对白| 国产最新精品免费| 麻豆中文一区二区| 日韩福利电影在线观看| 秋霞电影网一区二区| 日韩高清中文字幕一区| 日韩精品成人一区二区三区 | 中文字幕欧美国产| 久久久久9999亚洲精品| 欧美精品一区二区三区在线播放| 日韩三级高清在线| 日韩欧美一二三四区| 欧美一区二区三级| 欧美精品久久99| 欧美精品第1页| 欧美日韩免费高清一区色橹橹| 91福利精品视频| 欧美在线不卡视频| 欧美亚洲另类激情小说| 欧美色图在线观看| 欧美色网一区二区| 91麻豆精品国产无毒不卡在线观看 | 日韩主播视频在线| 秋霞午夜鲁丝一区二区老狼| 麻豆精品精品国产自在97香蕉 | 国产精品五区| 久久国产欧美| 欧美最猛性xxxxx直播| 欧美日韩成人综合天天影院| 欧美一二三在线| 337p粉嫩大胆色噜噜噜噜亚洲| 久久久国产综合精品女国产盗摄| 国产日本一区二区| 亚洲色大成网站www久久九九| 夜夜操天天操亚洲| 日本欧美加勒比视频| 极品尤物av久久免费看| 福利视频网站一区二区三区| 99国产精品视频免费观看| 欧美久久九九| 亚洲精品资源| 久久中文在线| 69精品人人人人| 国产亚洲人成网站| 亚洲欧美日本韩国| 日韩精品一级中文字幕精品视频免费观看 |