👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事中“练” 《互联网高频面试题》:面朝简历学习,春暖花开 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》:系统学习,互联网主流技术栈 《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产 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 插件开发并上线到应用市场。这样的经验,遥遥领先于其他网友🤣
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)