IDEA自定义Generate POJOs.groovy数据表批量生成实体类
目录
1,idea连接mysql数据库
2,右键数据库表格,打开代码生成器规则文件地址
3,在文件夹下新建新建MyGenerate POJOs.groovy
4,自定义MyGenerate POJOs.groovy
5,通过自定义规则生成代码
6,想要有@Data,@Entity和@ Column注释,请加入lombok和persistence-api依赖
7,生成实体类效果如下
8.文件下载处:
1,idea连接mysql数据库
2,右键数据库表格,打开代码生成器规则文件地址
3,在文件夹下新建新建MyGenerate POJOs.groovy
4,自定义MyGenerate POJOs.groovy
import com.intellij.database.model.DasTableimport com.intellij.database.model.ObjectKindimport com.intellij.database.util.Caseimport com.intellij.database.util.DasUtilimport java.time.LocalDateTimeimport java.time.format.DateTimeFormatter/** Available context bindings:* SELECTION Iterable* PROJECT project* FILES files helper* update by yitianRen 20200324*/packageName = ""typeMapping = [(~/(?i)int/) : "Integer", //数据库类型和Jave类型映射关系(~/(?i)float|double|decimal|real/): "Double",(~/(?i)bool|boolean/) : "Boolean",(~/(?i)datetime|timestamp/) : "Date",(~/(?i)date/) : "java.sql.Date",(~/(?i)time/) : "java.sql.Time",(~/(?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 tablecomment = javaName(table.getComment(), true)def className1 = javaName(table.getName(), true)def className = className1.drop(1) +"Vo"packageName = getPackageName(dir)def fields = calcFields(table)//更改实体生成规则PrintWriter output = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(dir, className + ".java")), "utf-8"))output.withPrintWriter { out -> generate(out, className,tablecomment, fields,table) }//输出实体类// new File(dir, className + ".java").withPrintWriter { out -> generate(out, className, fields) }}// 获取包所在文件夹路径def getPackageName(dir) {return dir.toString().replaceAll("\\\\", ".").replaceAll("/", ".").replaceAll("^.*src(\\.main\\.java\\.)?", "") + ";"}def generate(out, className,tablecomment, fields, table) {out.println "package $packageName"out.println ""out.println "import lombok.Data;"out.println "import com.baomidou.mybatisplus.annotation.TableName;"out.println "import com.baomidou.mybatisplus.annotation.IdType;"out.println "import com.baomidou.mybatisplus.annotation.TableId;"out.println "import lombok.AllArgsConstructor;"out.println "import lombok.Builder;"out.println "import lombok.NoArgsConstructor;"out.println "import io.swagger.annotations.ApiModel;"out.println "import io.swagger.annotations.ApiModelProperty;"Set types = new HashSet()fields.each() {types.add(it.type)}if (types.contains("Date")) {out.println "import java.util.Date;"}if (types.contains("InputStream")) {out.println "import java.io.InputStream;"}out.println "/**\n" +" * \n" +" * $tablecomment\n" +" *\n" +" * @author ch\n" +" */"out.println ""out.println "@Data"out.println "@Builder"out.println "@AllArgsConstructor"out.println "@NoArgsConstructor"out.println "@TableName(value = \"${table.toString().replaceAll("table:","")}\")"out.println "@ApiModel(value = \"$className\", description = \"$tablecomment\")"out.println "public class $className{"out.println ""fields.each() {out.println ""// 输出注释 这里和下面的 comm是一一对应的/* if (isNotEmpty(it.commoent)) {//定义非空校验,it.commoent != ""手写无效out.println "// ${it.commoent}"}*/if (it.annos != "") /*out.println " ${it.annos}"*/out.println " @ApiModelProperty( value=\"${it.commoent}\")"out.println " private ${it.type} ${it.name};"}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() }.valuedef comm = [tablecomment : table.getComment(),name : javaName(col.getName(), false),type : typeStr,commoent: col.getComment(),// annos: "@Column(name = \"" + col.getName() + "\" )"]//对于表中主键自定义注解if ("pk".equals(Case.LOWER.apply(col.getName()))){// comm.annos = "\t@Id\n"//自增主键需要// comm.annos += "@Column(name = \"" + col.getName() + "\")"}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]}def isNotEmpty(content) {return content != null && content.toString().trim().length() > 0}
这工具好用的就像她
5,通过自定义规则生成代码
6,想要有@Data,@Entity和@ Column注释,请加入lombok和persistence-api依赖
<dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency>
7,生成实体类效果如下
package com.bim.model.manage.platform.vo;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import java.util.Date;/*** 平台用户** @author ch*/@Data@Builder@AllArgsConstructor@NoArgsConstructor@ApiModel(value = "UserVo", description = "平台用户")public class UserVo {@TableId(type = IdType.ASSIGN_ID)@ApiModelProperty(value = "主键id")private String id;@ApiModelProperty(value = "名称")private String name;@ApiModelProperty(value = "编号")private String code;@ApiModelProperty(value = "密码")private String password;@ApiModelProperty(value = "角色id")private String roleId;@ApiModelProperty(value = "创建人id")private String createdById;@ApiModelProperty(value = "创建人名称")private String createdByName;@ApiModelProperty(value = "创建时间")private Date createdTime;@ApiModelProperty(value = "更新人id")private String updatedById;@ApiModelProperty(value = "更新时间")private Date updatedByTime;@ApiModelProperty(value = "更新人名称")private String updatedByName;@ApiModelProperty(value = "邮箱")private String email;@ApiModelProperty(value = "手机号")private String phone;@ApiModelProperty(value = "岗位id")private String postId;@ApiModelProperty(value = "部门id")private String deptId;}
压缩包里面包含:
Generate POJOs.groovy、My Generate POJOs.groovy、MyDto Generate POJOs.groovy、MyInsertDto Generate POJOs.groovy、MyUpdateDto Generate POJOs.groovy、MyVO Generate POJOs.groovy
即可放在文件夹下即可生成实体类,下载后有需要改动可咨询VX:ch1633105493
8.文件下载处:
https://download.csdn.net/download/qq_40800950/20530257?spm=1001.2014.3001.5501
IDEA自定义Generate POJOs.groovy数据表批量生成实体类相关推荐
- 使用IDEA插件从数据库表生成实体类
目录 1.介绍 2.添加插件 3.创建数据库连接 4.添加数据库连接信息和驱动 5.表生成实体类 1.介绍 EasyCode是基于IntelliJ IDEA Ultimate版开发的一个代码生成插 ...
- Idea groovy表生成实体类带注释
Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...
- 用sql语句快速生成大量数据,批量生成数据
用sql语句快速生成大量数据,批量生成数据 1.首先先建两个表 – 创建一个临时内存表 set global log_bin_trust_function_creators=1; DROP TABLE ...
- java生成流水号001_可变数据如何批量生成?
原标题:可变数据如何批量生成? 常见的可变数据批量生成有两种:"流水号数据的批量生成"和"连接数据库文件的数据生成".流水号数据就是类似001-002-003- ...
- 【csv文件转xml文件】Excel表格数据快速批量生成xml格式文件
使用背景: 使用场景举例:数据集标签处理 有时候我们需要将固定格式的Excel表格文件(csv文件)转换为xml文件使用,例如我们在目标检测实验当中我们需要制作数据集Pascal VOC格式的标签文件 ...
- 利用Pajek软件批量处理excel数据,批量生成网络关系图
利用Pajek软件批量处理excel数据,批量生成网络关系图 Pajek软件大家想必都不陌生,但是我很陌生,因为我用它不是进行网络分析,而是用它来画关系图(类似网络图).但是Pajek软件手工操作时一 ...
- 在springboot中使用mybatis generate自动生成实体类和mapper
1.在全局的pom中引入mybatis generate的依赖 <!--自动生成实体--><dependency><groupId>org.mybatis.gene ...
- 根据Excel表的配置,自动生成数据库表的CRUD以及相关的Winform列表和编辑界面程序文件,接上篇(自动生成实体类)
本文仍然属于一个自动生成代码工具. 上一篇我们根据数据库表的信息,自动生成实体类.cs文件.这次我们根据Excel配置,直接生成CRUD以及窗体列表和编辑界面相关的程序源文件. 通过自动生成代码,这样 ...
- 自定义tt文本模板实现MySql指数据库中生成实体类
自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击"添加"/"新建项",选择"文本模板",输入名称后点击添加. 2. ...
最新文章
- TinyMCE的使用-安装
- jquery单选框radio值改变change事件
- 冒泡和快速排序的时间复杂度_排序算法整合(冒泡,快速,希尔,拓扑,归并)
- 包含c语言的序列化字符,Android Serializable与Parcelable原理与区别
- asp.net 获取 当前日期时间 及 前后N天日期时间(DropDownList数据绑定)
- SAP物料管理自动记帐详解
- mysql linux32_Linux 配置 mysql 5.7.32 实操记录
- dnf如何快速拾取物品_DNF游戏里的一些便利性功能,每个都非常实用
- 【实践】Angel深度学习在腾讯广告推荐训练优化中的实践
- word文档生成目录
- JavaScript开发规范要求
- 解决eclipse乱码问题
- 【开发工具集】功能强大的网络设置工具——IPOP
- 使用Statistic统计代码行数
- Apple中文社区平台的 Mac 用户群体
- 计算机基础必修上课是上机吗,关于大学计算机基础论文范文集,与上海财经大学国际工商管理学院相关毕业论文范文...
- win7命令行打开计算机,Win7怎么打开cmd命令提示符_Win7打开命令提示符教程-192路由网...
- windows终端终端_Windows终端机完整指南
- “消费盲返”的商业模式,你知道多少?
- VSCode PlatformIO IDE 下开发ESP32遇到的问题