目录

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.DasUtil​import 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数据表批量生成实体类相关推荐

  1. 使用IDEA插件从数据库表生成实体类

    目录 1.介绍 2.添加插件 ​ 3.创建数据库连接 4.添加数据库连接信息和驱动 5.表生成实体类 1.介绍 EasyCode是基于IntelliJ IDEA Ultimate版开发的一个代码生成插 ...

  2. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

  3. 用sql语句快速生成大量数据,批量生成数据

    用sql语句快速生成大量数据,批量生成数据 1.首先先建两个表 – 创建一个临时内存表 set global log_bin_trust_function_creators=1; DROP TABLE ...

  4. java生成流水号001_可变数据如何批量生成?

    原标题:可变数据如何批量生成? 常见的可变数据批量生成有两种:"流水号数据的批量生成"和"连接数据库文件的数据生成".流水号数据就是类似001-002-003- ...

  5. 【csv文件转xml文件】Excel表格数据快速批量生成xml格式文件

    使用背景: 使用场景举例:数据集标签处理 有时候我们需要将固定格式的Excel表格文件(csv文件)转换为xml文件使用,例如我们在目标检测实验当中我们需要制作数据集Pascal VOC格式的标签文件 ...

  6. 利用Pajek软件批量处理excel数据,批量生成网络关系图

    利用Pajek软件批量处理excel数据,批量生成网络关系图 Pajek软件大家想必都不陌生,但是我很陌生,因为我用它不是进行网络分析,而是用它来画关系图(类似网络图).但是Pajek软件手工操作时一 ...

  7. 在springboot中使用mybatis generate自动生成实体类和mapper

    1.在全局的pom中引入mybatis generate的依赖 <!--自动生成实体--><dependency><groupId>org.mybatis.gene ...

  8. 根据Excel表的配置,自动生成数据库表的CRUD以及相关的Winform列表和编辑界面程序文件,接上篇(自动生成实体类)

    本文仍然属于一个自动生成代码工具. 上一篇我们根据数据库表的信息,自动生成实体类.cs文件.这次我们根据Excel配置,直接生成CRUD以及窗体列表和编辑界面相关的程序源文件. 通过自动生成代码,这样 ...

  9. 自定义tt文本模板实现MySql指数据库中生成实体类

    自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击"添加"/"新建项",选择"文本模板",输入名称后点击添加. 2. ...

最新文章

  1. TinyMCE的使用-安装
  2. jquery单选框radio值改变change事件
  3. 冒泡和快速排序的时间复杂度_排序算法整合(冒泡,快速,希尔,拓扑,归并)
  4. 包含c语言的序列化字符,Android Serializable与Parcelable原理与区别
  5. asp.net 获取 当前日期时间 及 前后N天日期时间(DropDownList数据绑定)
  6. SAP物料管理自动记帐详解
  7. mysql linux32_Linux 配置 mysql 5.7.32 实操记录
  8. dnf如何快速拾取物品_DNF游戏里的一些便利性功能,每个都非常实用
  9. 【实践】Angel深度学习在腾讯广告推荐训练优化中的实践
  10. word文档生成目录
  11. JavaScript开发规范要求
  12. 解决eclipse乱码问题
  13. 【开发工具集】功能强大的网络设置工具——IPOP
  14. 使用Statistic统计代码行数
  15. Apple中文社区平台的 Mac 用户群体
  16. 计算机基础必修上课是上机吗,关于大学计算机基础论文范文集,与上海财经大学国际工商管理学院相关毕业论文范文...
  17. win7命令行打开计算机,Win7怎么打开cmd命令提示符_Win7打开命令提示符教程-192路由网...
  18. windows终端终端_Windows终端机完整指南
  19. “消费盲返”的商业模式,你知道多少?
  20. VSCode PlatformIO IDE 下开发ESP32遇到的问题

热门文章

  1. git版本时光穿梭试用
  2. TabLayout更改下划线的宽度
  3. android监听通话状态
  4. 如何使用 TODO 注释
  5. meta-data android,AndroidManifest meta-data 知识介绍
  6. Apache CXF生成java代码用java调用Webservice接口
  7. 苹果手机回收机器人Daisy,每小时可拆解200部iPhone
  8. PageHelper分页插件使用 及原理
  9. 基于FPGA的移相波束形成verilog实现
  10. 西门子S7-200 CPU输入/输出接线说明