MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

一款支持设计模式代码生成的IDEA插件

2025-03-02 17:35 huorong 精选文章 5 ℃ 0 评论

一、前言

在各种ORM框架日益完善的今天,相信大家在开发时很少再去手写一些基本的类似于Entity,Controller的重复代码了,基本都使用工具生成,目前GitHub上开源的代码生成工具也比较多,看了下简单的没法完全满足使用需求,比较完善的需要占用服务器资源署成服务的形式使用,在遇到远程或者居家办公(公司没有vpn或者连不上),断网的情况下也多有不便,考虑到一般来说一旦项目架构,规范定下来的时候,代码生成都会以比较固定的形式,不需要多么丰富的定制化功能给我们去选择,便抽空将代码生成脚本封装成idea插件的格式,代码会生成到指定包下,不需二次拷贝,顺便增加了一些设计模式模版代码生成的功能,接下来介绍下此插件。

二、数据库代码生成

安装:在idea插件市场里搜索: Java CG(不用区分大小写)

使用: 在当前项目resource目录下新增一个cg_config.properties文件,文件内容如下

# 数据库名
database=book_manager
# 数据库url
url=jdbc:mysql://localhost:3306/book_manager?useUnicode=true&characterEncoding=UTF-8
# 数据库用户名
username=root
# 数据库密码
password=root
# 生成文件包名
packageName=com.cqry
# controller层返回result对象名称
resultName=Json
# controller层返回result对象包名
resultPackage=com.cqry.utils
# controller层返回code名称
returnCodeName=ReturnCode
# controller层返回成功code名称
successCodeName=ReturnCode.OK
# controller层返回code包名
returnCodePackage=com.cqry.utils.enumeration

然后点击idea左上角File菜单-new即可看见生成选项

点击代码生成,进入基本信息填写框:

填写完信息后点击提交

项目会自动刷新,生成如下目录结构代码

entity里包含了

  • bo:业务操作请求入参,属性包含了表所有字段,可根据实际需要增删
  • enums:数据库中的枚举字段(通过截取建表时的备注实现,类似于【用户类型(1: 用户,0:管理员)】这种形式,分号和左右括号都需要中文字符
  • query: 业务查询入参对象,属性包含了表所有字段,可根据实际需要增删,默认继承了自定义的PageParam,PageParam包含了当前页码和每页条数,使用校验器限制了每页数量
  • vo:返回给前端作数据渲染的业务对象,属性包含了表所有字段,可根据实际需要增删
  • 最后就是数据库表对应实体,默认继承了EntityBase,EntityBase包含一些基础字段,ID,创建人,创建时间,修改人,删除状态等,这些字段建表的时候按规范是需要有的。

后面就是mapper,service文件,最后来看看controller类

  • 方法类别:在CRUD的基础上加了一个分页查询的方法
  • 入参校验:基于Spring的Validation校验模块
  • 防重复提交校验:使用自定义PreventRepeat注解,基于aop拦截标注方法,通过将用户Token+接口名+请求参数(可配置)存入Redis实现
  • 方法返回值:统一Json对象,大家可以在上面的cg_config文件中配置为自己项目封装的返回对象。
  • 返回code,统一ReturnCode类,可配置
  • 涉及的切面类,返回值对象均已放到GitHub项目extra目录下

三、设计模式模版代码生成

使用方式和代码生成一样,目前支持以下常用几种,后续考虑将责任链、PipeLine也加进去

  • 单例模式(枚举、常量、双重校验锁)
  • 策略模式(枚举、函数式、工厂加模版)
  • 装饰器模式

比如我们生成一个枚举策略

四、结论

感兴趣的小伙伴可以下载试用,也可以基于自己公司的情况或和自己的需求进行定制化修改,有疑问欢迎在评论区留言交流 插件源码已经放到GitHub https://github.com/jekran/code\_generate[1]

最后

① 谢谢大驾光临~
② 如果对于文中所持观点有不同的看法,欢迎大佬指点,交流~

原文:https://juejin.cn/post/7394040164178870281

作者:自由的_鱼

#记录我的2024#

Reference

[1] https://github.com/jekran/code_generate: https://github.com/jekran/code_generate

Tags:idea 常用插件

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言