构建支持多种数据库类型的代码自动生成工具

背景:

一般的业务代码中写来写去,无外乎是先建好model,然后针对这个model做些CRUD的操作。(主要针对单表的业务操作)针对于数据库dao、mapper等的代码自动生成已经有了mybatisGenerator这种工具,但是针对于controller、service这些我们现在的接口api一般遵循的是restful风格,因此这些也是有规则可循的。举例有个goodsInfo 的model,针对于他的操作,肯定有 单个查询、list查询、修改、删除等。而这些代码没必要复制粘贴来一遍,完全可以由工具自动生成,若有特殊业务场景重写即可。本工具就算解决这类问题的。

效果截图

运行生成示例结果:

表选择界面:

思路:

代码自动生成说起来很神秘,其实无外乎两个方面:

从数据库拿到需要自动生成的代码对应表。

从表结构、字段名生成对应的mapper、model、及controller、service等

如何拿到需要自动生成的代码对应表

sqlservr、mysql、oracle等这些主流数据库中都存在系统表结构的表,存储的是所有用户自己建立表的名称、字段等,所以直接查询这些系统表即可罗列出所有业务表。然后做个可视化界面供用户选择即可。(这里做一下更新,我实际项目中没有用sql查询的方式,因为不同数据库对于系统表的存储方式各不相同,查询语句写的太蛋疼了,实际采用的是 conn.getMetaData() 的方式,采用元数据来拿到指定数据库中各种表结构信息)

如何自动生成代码

有了表结构、字段名等如何自动生成代码呢,这个时候就需要模板引擎了。简单来讲可以理解为把固定的地方写死,变化的地方按照规则替换。

可以用我们小时候写作文的例子来说明。我们(作文厉害的请自动忽略 “们”

自动产生fsm代码的工具_代码自动生成工具相关推荐

  1. echart 乡镇地图 地图数据在线生成工具_自定义样式生成工具

    最近有点时间,做了个echart地图在线生成图片,支持省.市.县区.乡镇四级地图查看的功能,做ppt或者设计可能会用到,本人不是专业UI,页面简陋,功能还算比较全, 加了点新功能,调整了IE浏览器访问 ...

  2. GIF录屏制作工具_录制屏幕生成GIF(C#工程+源码)

    效果图如下: 工程源码见文章结尾 通过录制屏幕的区域 可以预览生成的GIF图片 图片比较清晰 源码中可以修改gif质量 源码中可以修改gif帧数 通过鼠标选择需要的区域 FrmRect frmRect ...

  3. java代码重构工具_代码重构什么意思 Java代码重构的几种模式

    指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果. 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方.在极限编程的方法学中,重构需要单元测试来支持. 在软件工程 ...

  4. python和报表生成工具_报表自动生成工具的原理方法,及热门软件

    阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...

  5. 最好用的_古书制作工具_古籍排版工具_古文排版_自动生成古书_多种古书风格_古籍制作工具_个性化书籍制作工具

    古书制作工具_古籍排版工具使用方法 前言 最好用的古书制作工具, 最好用的古籍排版工具, 最好用的古籍制作工具, 最好用的古文排版, 自动古书排版, 自动书籍排版, 自动生成古书, 多种古书风格 可自 ...

  6. java 代码整洁快捷方式_代码整洁之道:你的代码是否足够优雅、整洁、易懂?...

    普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码.如何写出优雅整洁易懂的代码是一门学问,也是软件工程实践里重要的一环.下面从注释.命名.方法,并发等视角简单给出了部分最佳实践.相信每一 ...

  7. java 代码书写规范_代码书写规范和命名规范

    上一篇给大家分享了一下,关于文档编写的几个概念.这篇文章阐述如果编写代码书写规范以及命名规范文档.[以java语言为例] 1.代码书写规范 代码书写规范,能够让不同的人,写出相同风格的代码.很多人都看 ...

  8. java 代码坏味道_代码中的坏味道

    前言 在日常生活中,当我们买的水果放久了之后会发出一种难闻的气味("坏味道"),这个时候我们就应该把它扔掉.同样,代码也有"坏味道",当然确定什么是和不是代码& ...

  9. 工作效率 工具_我使用的工具加快了我的工作流程,使我的工作效率更高

    工作效率 工具 by Egwuenu Gift 通过Egwuenu礼物 我使用的工具加快了我的工作流程,使我的工作效率更高 (The tools I use speed up my workflow ...

最新文章

  1. 制作npm插件vue-toast-m实例练习
  2. 实例详细讲解ASP生成静态页面方法
  3. 热乎着,昨晚阿里这题真太绝了
  4. MVC4 WebAPI
  5. 用咨询的角度去实施软件项目
  6. idea2021部署maven+javaweb项目到jboss(diy)
  7. minix中atoi、atol、atof的实现
  8. ASP.NET数据库操作层的设计
  9. pbr发光 unity_PBR的基础理论
  10. 从app加载页面说开去
  11. Linux中tty框架与uart框架之间的调用关系剖析
  12. MATLAB滤波demo
  13. C#怎么调用MATLAB的动态链接库
  14. 使用Bus Hound抓USB转串口数据包,助力问题分析
  15. 微信邮箱号怎么申请注册?如何注册微信邮箱账号?微信邮箱提醒设置注册教程~
  16. 互联网教育:玩法与困境
  17. git分支的拉取和获取master分支最新代码
  18. Linux之旅----硬件篇
  19. 十年前你绝对没有看懂的《大话西游》.
  20. 我用分析了42万字的歌词,为了搞清楚民谣歌手们在唱些什么

热门文章

  1. c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较
  2. 腾讯TBS加载网页无法自适应记录
  3. plugin since you are using Gradle version 4.6 or above
  4. Android 柱状图
  5. html4废弃了哪些元素,HTML中的一些废弃元素_html
  6. 为什么使用Deque而不使用Stack构造栈
  7. 安装vuejs全过程、淘宝镜像
  8. mysql查询结果每条记录两个字段求和_MYSQL实现将两个结果集合并,并且按照时间字段分组,其他字段的值求和...
  9. 分布式下的session问题
  10. Fashion-MNIST数据集离线加载办法