天天看点

代码生成 | 放开双手,专注业务,一键生成项目基础结构 + 重复代码

作者:IT学习日记

前言

  「工欲善其事必先利其器,优秀者总是善于借助工具来提升自己的效率。」 作为一名开发者,项目架构设计完成后大部分的工作量就是项目架构搭建和表相关实体创建,「这部分工作技术含量不高却需要耗费大量时间,有没有办法一键生成呢?」

  本篇文章将给大家推荐一个:一键生成表实体(包括controller,service,mapper等),以及一键生成项目基础架构的开源项目-代码生成脚手架。许多朋友会问,这不就是mybatis-plus自动生成代码功能?「没错,实体结构生成功能是基于它,但是,比它拥有更多功能,还可以自定义。」

  「项目地址:」

  • Gitee:https://gitee.com/it-learning-diary/it-scaffold
  • Github: https://github.com/it-learning-diary/it-scaffold

  「一键生成项目基础架构演示」

代码生成 | 放开双手,专注业务,一键生成项目基础结构 + 重复代码

  「一键生成表相关实体功能演示」

代码生成 | 放开双手,专注业务,一键生成项目基础结构 + 重复代码

  「使用一键生成工具不仅能够提升开发效率,同时也能够让开发更加规范。」 当公司人员和项目逐渐增多时,如果没有一个统一的规范,那么每个人设计思想可能都不一样,引入的第三方依赖,版本,项目层级等都可能不同,后续项目出现问题或者项目负责人离职,维护成本会非常昂贵。

  「使用一键生成工具则可以有效地防范这一类问题,由公司架构师统一制定项目的依赖、版本、项目层级等基础信息,使用者只需要一键生成,然后在生成的层级中进行业务代码的编写即可。」

项目一键生成功能介绍

  「实现原理:」 项目的自动生成主要依赖于自定义模板+freemarker模板引擎,使用者可以根据实际情况自行定义项目的依赖和层级等基础信息,然后通过模板引擎将数据渲染进去。

  「使用技术:」 freemarker

  「项目层级介绍:」 所有模板都放在resources目录下,可以根据自己的情况进行新增或者删除,需要替换数据的地方使用${占位符名称},然后在请求参数中添加即可(注意:freemarker中如果占位符的值为null时,渲染模板时会出现错误,因此一定要保证占位符的数据不能为null)。

代码生成 | 放开双手,专注业务,一键生成项目基础结构 + 重复代码

数据表实体一键生成功能介绍

  「实现原理:」 对mybatis-plus-generator进一层封装,增加默认配置,使用者只需要关注常用的配置即可。

  「使用技术:」 freemarker,mybatis-plus-generator

  「项目层级介绍:」 实体相关模板都放在resources的tempalte目录下,可以根据自己的情况进行新增或者删除,需要替换数据的地方使用${占位符名称},然后在请求参数中添加即可(注意:freemarker中如果占位符的值为null时,渲染模板时会出现错误,因此一定要保证占位符的数据不能为null)。

代码生成 | 放开双手,专注业务,一键生成项目基础结构 + 重复代码

结合使用

  最常见的使用是先创建项目基础架构,然后再生成表实体相关信息,并指定到项目路径下,如下图演示。

代码生成 | 放开双手,专注业务,一键生成项目基础结构 + 重复代码

写在最后

  除了项目基础结构生成和表实体相关结构生成,代码脚手架后续还会考虑集成:表结构导出(html,word,pdf等方式),更多功能欢迎大家积极提供建议,「如果对大家有帮助,请给博主一个Star。」

  「项目地址:」

  • Gitee:https://gitee.com/it-learning-diary/it-scaffold
  • Github: https://github.com/it-learning-diary/it-scaffold

  「相关推荐:」

  博主之前也开源过一个集成了各种常用工具如csv、excel、ftp、文件系统等等功能开源项目-轮子之王,「在Gitee+Github已收到近300Star,有兴趣的读者也可以点击下面链接进行查看。」

  • 轮子之王集成功能详细介绍:http://it-learning-diary.gitee.io/it-wheels-king-inline-doc/#/
  • Gitee地址:https://gitee.com/it-learning-diary/it-wheels-king
  • Github地址:https://github.com/it-learning-diary/it-wheels-king

继续阅读