IntelliJ IDEA反向生成Javabean(锲合度100%)
IDEA代码生成admin 发布于:2019-11-23 20:33:25
阅读:loading
恰好前两天在一个同事的笔记里看到了使用IDEA反向生成JPA实体Entity的详细教程,体验了一下效果还不错,回归到自己的博客系统,每次新开一个功能模块总是要先创建数据库表,再根据数据库表结构生成对应的实体对象,本次就结合自己的功能需求,来使用IDEA反向生成我所需求的Javabean对象。
在此之前,也曾经写过类似的Demo,主要是根据查询某个表的字段结构生成对应的Java文件,比如包括的信息为:表注释转换为类注释;表字段类型转换为属性类型;表字段名称转换为属性名称;总之实现起来比较简单,但是这些东西在实现与使用的时候跟IDE是没有关系,也需要指定生成文件编码、生成文件路径等等繁琐的细节,然而本次分享的实现则较为完美,整个过程采用IDEA完成,使用Groovy语言实现(在今天之前我也是0基础),该语言在使用时跟Java语言一样,以至于我看着看着,琢磨着就将所有的问题全给解决了,作为新语言上手阅读与修改的能力我想在你丰富的经验基础上这些都不是问题。
新版博客系统中的一个最基本实体Bean对象将包括有MyBatisPlus、Swagger、Lombok等相关的注解类依赖,使用MyBatisPlus生成对应的字段映射;Swagger生成对应的Api文档参数;Lombok生成对应的get/set属性方法(构造函数,hasCode)等;
(1)通过设置后使用IDEA自带的工具一键生成;
(2)选择生成的文件需要存放的代码包路径;
(3)动态获取生成Javabean的package路径(依赖选择的包路径中含有maven项目的src\main\java路径);
(4)导入生成Javabean文件的最基本依赖,参考“Javabean生成范围”的基本类库;
(5)支持数据库名称与Java名称转换,如将数据库的匈牙利转换为Java的驼峰命名;
(6)支持数据库类型与Java类型转换,如将int转Integer、bigint转Long、date转Date等;
(7)主键生成策略采用MybatisPlus的“全局唯一ID (idWorker)”的方式,约定从数据库表字段的注释中获取含有“主键ID”字样的列,约定此时为主键列,也有见到使用默认第一个字段的列约定为主键列的,但一些关系表中有的时候不需要创建主键列的情况,总之,我这里的默认规则如此;
(8)动态生成注释参数,如@author、@date、及类的说明(来自数据库表的说明);
(9)动态生成字段类型、名称、ApiProperty注释(来自数据库表字段的说明);
(10)支持需要导入类的非基本类型,如java.util.Date、java.io.InputStream等;
(11)结合lombok插件,不生成get/set属性方法;
(12)生成文件使用UTF-8编码,并且支持其中的中文;
任何一个组件(插件)的使用都是基于最基础和最常用开展的,如果需要深度定制则需要自定义,使用自定义的方式可以根据我们的需要进行100%的实现,因此本文将实现一个与我的契合度100%的实现,这真的是一个非常好的实现方案,废话就这么多,详细的分解看我细细道来。
(新建了一个Module存放beans示例及后续源代码)
(不含主键生成策略)
(采用约定的主键生成策略后生成)
(在IDEA的工作空间中查看脚本文件)
参考代码(部分)
https://gitee.com/88911006/chendd-examples/blob/master/chendd-blog-Table2JavaBean/src/main/resource
点赞