国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:127日期: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 | 欧美成人精品动漫在线专区 | 黄色网址国产 | 韩国精品一区视频在线播放 | 手机免费毛片 | 国产成人综合95精品视频免费 | 中文字幕高清在线天堂网 | 乱人伦中文视频在线 | 在线中文字幕视频 | 精品400部自拍视频在线播放 | 成年人三级黄色片 | 免费人成在线观看播放国产 | 国产亚洲一区二区三区不卡 | 日韩欧美一级毛片在线 | 欧美成人3d动漫专区 | 中国农村一级毛片 | 国产国语在线播放视频 | 成年女人毛片免费视频 | 日本一区二区三区在线 视频观看免费 | 亚洲成在人线中文字幕 | 亚洲一区天堂 | 日韩国产欧美在线观看一区二区 | 国产午夜不卡在线观看视频666 | 91.久久| 另类在线视频 | 国产丝袜不卡一区二区 | 在线播放一区二区精品产 | 国产欧美日韩在线 | 国产精品久久久久久久久久久久久久 | 日韩精品久久久免费观看夜色 | 亚洲国产影视 | 久久精品国产99国产精品免费看 | 午夜性色福利视频在线视频 | 国产精品久久久久久免费 | 亚洲欧美日韩国产精品影院 | 鸥美性生交xxxxx久久久 | 亚洲国产成人久久一区二区三区 |