Idea groovy表生成实体类带注释
Idea groovy表生成实体类带注释
1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述。
这时点击会生成一个poji
这时生成的pojo中是不带中文注释的,需要自己配置,往下:
3.根据图中的步骤走,找到groovy配置文件
4.根据项目情况,自己定义规则
import com.intellij.database.model.DasTable
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
import java.io.*
import java.text.SimpleDateFormat
import com.intellij.database.model.ObjectKind/** Available context bindings:* SELECTION Iterable<DasObject>* PROJECT project* FILES files helper*/packageName = "com.cscec;"
typeMapping = [(~/(?i)tinyint|smallint|mediumint/) : "Integer",(~/(?i)int/) : "Integer",(~/(?i)bool|bit/) : "Boolean",(~/(?i)float|double|decimal|real/) : "Double",(~/(?i)datetime|timestamp|date|time/) : "Date",(~/(?i)blob|binary|bfile|clob|raw|image/): "InputStream",(~/(?i)number/) : "Integer",(~/(?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)new File(dir, className + ".java").withPrintWriter("utf-8") { out -> generate(out, className, fields, table) }
}// 获取包所在文件夹路径
def getPackageName(dir) {return dir.toString().replaceAll("\\\\", ".").replaceAll("/", ".").replaceAll("^.*src(\\.main\\.java\\.)?", "") + ";"
}def generate(out, className, fields, table) {out.println "package $packageName"out.println ""out.println "import com.baomidou.mybatisplus.annotation.IdType;"out.println "import com.baomidou.mybatisplus.annotation.KeySequence;"out.println "import com.baomidou.mybatisplus.annotation.TableId;"out.println "import com.cscec.epc.common.BaseOperationEntity;"out.println "import lombok.Data;"Set types = new HashSet()fields.each() {types.add(it.type)}if (types.contains("Date")) {out.println ""out.println "import java.util.Date;"}if (types.contains("InputStream")) {out.println "import java.io.InputStream;"}out.println ""out.println "/**"out.println " * @author on " + new SimpleDateFormat("yyyy/MM/dd").format(new Date()) +"."out.println " */"out.println "@Data"out.println "@KeySequence(value = \"" + table.getName() + "_SEQ\")"out.println "public class $className extends BaseOperationEntity {"out.println ""fields.each() {// 输出注释if (isNotEmpty(it.commoent)) {out.println "\t/**"out.println " \t* ${it.commoent.toString()}"out.println " \t*/"}if (it.annos != "") out.println " ${it.annos}"out.println "\tprivate ${it.type} ${it.name};"}out.println ""out.println "}"
}def isNotEmpty(content) {return content != null && content.toString().trim().length() > 0
}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() }.valuedef comm = [colName : col.getName(),name : javaName(col.getName(), false),type : typeStr,commoent: col.getComment(),annos : ""]if ("id".equals(Case.LOWER.apply(col.getName())))comm.annos = "\t@TableId(value = \"id\", type = IdType.INPUT)"fields += [comm]}
}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]
}
配置好后,重新回到步骤2生成,即可生成想要的带中文的实体啦~
相关文章:

fflush函数的深入理解
本人昵称sky,欢迎与各位多多交流学习 这样的c程序想必大家都不陌生,fflush()这个函数有清除输入输出缓存的功能,那很多人就会问了,什么是清除输入输出缓存呢? 其实就是我们在printf输出的时候,是先输出到一…

VS快捷键专题
如要初始化VS开发环境,使用如下命令:开始->运行->键入“devenv.exe /resetuserdata”。 ShiftAltEnter: 切换全屏编辑CtrlB,T / CtrlK,K: 切换书签开关CtrlB,N / CtrlK,N: 移动到下一书签CtrlB,P: 移动到上一书签CtrlB,C: 清除全部标签CtrlI: 渐进式搜索CtrlShiftI: 反向…

Maya阿诺德室外环境灯光照明和渲染技术学习视频教程
Maya阿诺德室外环境灯光照明和渲染技术学习视频教程 Maya and Arnold_ Exterior Lighting and Rendering 教程时长 1小时47分 大小 1.1G 1280X720分辨率 使用软件:Maya 、 Arnold、PS 共八大章 33小节 语言:英语机译中文字幕 作者推荐 翻译还算比较准确…

Java学习总结:27
多线程常用操作方法 线程的命名与取得 由于多线程的状态不确定,所以线程的名字就成为了唯一的分辨标记,则在定义线程名称时一定要在线程启动之前设置名字,尽量不要重名,且尽量不要为已经启动动的线程修改名字。 由于线程状态的不…

Routing
假如有一个请求:localhost/home/index,那么路由需要做的事情如下: (1)确定Controller (2)确定Action (3)确定其他参数 (4)根据识别出来的数据&…

2022-2028年中国锂电材料产业投资分析及前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国锂电材料行业市场行业相关概述、中国锂电材料行业市场行业运行环境、分析了中国锂电材料行…

专为物联网开发的开源操作系统Contiki(转)
专为物联网开发的开源操作系统Contiki(转) (2012-04-19 15:31:09)原文网址:http://blog.sina.com.cn/s/blog_6de000c201010z7n.htmlContiki 是一个小型的,开源的,极易移植的多任务电脑操作系统。它专门设计以适用于一系列的内存首先的网络…

【转】ASP.NET Page事件的执行顺序
Page 执行中将按照如下顺序激活事件:Page.PreInitPage.InitPage.InitComplitePage.PreLoadPage.LoadPage.LoadCompletePage.PreRenderPage.PreRenderComplete如果页面从令一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩…

blender动画全面学习教程
大小解压后:31.8G 时长28小时 包含项目文件 1920X1080 MP4 语言:英语中英文字幕(根据原英文字幕机译更准确) Gumroad——活着!Blender中的动画课程 云桥网络 平台获取课程! 信息: Alive!是迄今…

Java学习总结:28
线程的同步和死锁 在程序开发中,所有程序都是通过主方法执行的,而主方法本身就属于一个主线程,所以通过主方法创建的新的线程对象都是子线程。 利用子线程可以进行异步的操作处理,这样可以在不影响主线程运行的前提下进行其他操作…

BZOJ1202: [HNOI2005]狡猾的商人
Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的。账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i1,2,3...n-1,n), 。当 Ai大于0时表示这个月盈利Ai 元,当 Ai小于0时表…

导出swagger2生成的文档
百度了好多篇用法,没法用。特此记录一下 一、下载项目 下载https://github.com/Swagger2Markup/spring-swagger2markup-demo下的项目,保存,注意文件路径不要有中文。我们称这个项目为A项目。 没错这个项目就是专门根据json解析生成文档的。…

把三千行代码重构为15行
2019独角兽企业重金招聘Python工程师标准>>> 如果你认为这是一个标题党,那么我真诚的恳请你耐心的把文章的第一部分读完,然后再下结论。如果你认为能够戳中您的G点,那么请随手点个赞。 把三千行代码重构为15行 那年我刚毕业&#…

一起学WPF系列(2):第一个WPF应用程序
概述 Windows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序。使用 WPF,您可以创建广泛的独立应用程序以及浏览器承载的应用程序。一直以来,我对界面的东西是不怎么感兴趣的&am…

Java学习总结:29
线程间的经典操作案例——生产者与消费者案例 程序基本模型: package Project.Study.Multithreading;class Message{private String title; //保存信息的标题private String content; //保存信息的内容public void setTitle(String title) {this.title title;}…

Blender终极角色创造:从初学者到专业人士
Ultimate character creation in Blender: From beginner to pro 流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,48.0 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确) |大小解压后:24.8 GB 含建模参考图 |时长…

2022-2028年中国离心机行业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国离心机行业市场行业相关概述、中国离心机行业市场行业运行环境、分析了中国离心机行业市场…

Shell 十三问 的学习记录
在 BBS上看到了Shell十三问的帖子,由于比较就远了,怕以后再也找不到了,就把笔记贴过来了, 原帖地址: shell 十三问http://bbs.chinaunix.net/thread-2033675-1-1.html 贴出我做的笔记: <一>、为何叫做…

图解八大排序算法——我见过的最详细的讲解(转)
一、分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程。外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排…

UE4创建第一人称射击游戏学习教程 Unreal Engine 4: Create Your Own First-Person Shooter
UE4创建第一人称射击游戏学习教程本课程包含38节视频课,将逐步指导您完成以下主题: 云桥网络 平台获取课程! 如何创建6种可定制的武器(包括手枪、突击步枪、猎枪、狙击枪、榴弹发射器和火箭发射器) 如何制作基于命中扫描和投射的武器 如何制作第一人…

PS多形式的部分之间复制“笨办法”
PS剪切页面,有时候你可能会遇到这样的情况:设计改进,但是,我们要具有相同的切片。 在此假设,可以直接用于切割片。我们可以节省大量的时间,又分为片。 但是,人们一般不会在你的上跨片设计PSD在变…

Java学习总结:30
线程的生命周期 suspend()方法:暂时挂起线程; resume()方法:恢复挂起的线程; stop()方法:停止线程。 对于以上三个方法不推荐使用,它们已经被慢慢废除掉了,主要原因是这三个方法在使用时容易产…
SVN优化(一) SVN忽略maven项目的target
SVN优化(一) SVN忽略maven项目的target 一 eclipse刚开始导入的项目: 二 解决办法 方式一: 在项目代码路径,如: F:\xyx\sl 鼠标右键,“TortoiseSVN”-- >“Settings” -->"Subversion"-->"Global ignore pattern" 添加:target *.…

“WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
2019独角兽企业重金招聘Python工程师标准>>> 近日微软公布了最新的WPF路线图,一片热议;对于老牌控件提供商葡萄城来说,这是WPF系列控件一个重要的机遇,因此,Spread Studio for WPF产品做了一次重要更新&…

C语言新手写扫雷攻略3
界面绘制好后,雷数也布置了,接下来就是游戏的运行过程了,今天先不说具体过程,再来看看需要用到的辅助函数 先是简单的画红旗,鼠标右键的功能是画红旗,至此我们都是在使用函数自己绘图,效率是低&…

制作欧比旺·克诺比逼真的CG角色学习教程
艺术站-制作欧比旺克诺比逼真的Cg角色 大小解压后:4.98G 含课程素材文件 1920X1080 .mp4 语言:英语中英文字幕(根据原英文字幕机译更准确) 课程获取:制作欧比旺克诺比逼真的CG角色学习教程 信息: 欧比旺是我一直以来…

Java学习总结:31(StringBuffer类)
StringBuffer类 在Java中String类不适合使用于频繁修改字符串的操作上(因为其字符串常量一旦声明则不可改变,只能改变字符串对象,改变的是其内存地址的指向),所以我们可以使用StringBuffer类方便用户进行内容的修改。 例:观察Str…

c语言常用数据类型转换整理
你要发送原始数据流 还是 格式化输出? 如果是格式化 按原子说的 ,用sprintf / printf; 如果发送原始内存数据流, 可按下面发送, 发送 #define BYTE0(pointer) (*((char*)(&pointer)0)); #define BYTE1(pointer) (*((char…

2022-2028年中国老年旅游市场深度调研及开发战略研究报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国老年旅游行业市场行业相关概述、中国老年旅游行业市场行业运行环境、分析了中国老年旅游行…

Andriod使用webview控件往APP里内嵌网页
1.布局文件片段:res-layout <WebView android:id"id/Toweb" android:layout_width"fill_parent" android:layout_height"fill_parent" /> 2.Java片段:src Overrideprotected void onCreate(Bundle savedInstance…