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

科技   2024-12-23 11:55   上海  

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/post/
7394040164178870281


前言

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

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

数据库代码生成

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

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


> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
>
> * 项目地址:<https://github.com/YunaiV/yudao-cloud>
> * 视频教程:<https://doc.iocoder.cn/video/>

# 数据库名
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

这个插件整体上来说,是比较简单的。功能不多,上手较快。主要是学会 idea 的插件机制,以及开发过程。感兴趣的网友,可以制作一款自己的插件,哪怕是 hello world 也是可以的。简历上,可以宣称,做过 idea 插件开发并上线到应用市场。这样的经验,遥遥领先于其他网友🤣


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

Java基基
一个苦练基本功的 Java 公众号,所以取名 Java 基基
 最新文章