Java Web 模板代码生成器的设计与实现

起因

项目中需要根据数据库表写很多Meta、Dao、Service代码,其中很多代码都是重复而繁琐的。因此如果有一个模板代码的生成器,就可以一定程度提高开发效率。

目标

可配置生成Java Web项目中Dao、Meta、Service层模板代码的生成器。

代码框架

设计思路

项目参考Mybatis generator生成代码的过程,具体步骤分为以下5步。

逻辑步骤

解析命令行

解析配置文件

获取数据表信息

生成配置信息

生成文件

代码设计

命令解析类 ShellRunner

该类负责解析命令行的命令,解析配置文件并封装所需的数据给代码生成类。

可解析命令有:指定配置文件所在路径和:是否重写目标文件。

配置文件的配置项有:

代码生成类 CodeGenerator

该类负责连接数据库,查询数据表的表信息,将SQL类型映射成Java类型并封装所需的数据给文件生成类。

通过以上几行代码,rs变量中已经获得目标数据表的表信息。

方法的实质是执行了语句。

在结果集中,后续处理大致需要以下表信息列。

最后通过中的类型映射()和中的驼峰命名转换()将SQL信息转换成Java信息。

文件生成类 FileGenerator

该类通过FreeMarker模板引擎组合数据成目标代码文件。

主逻辑如下:

注意

在测试中,该方法可以获取项目根目录,但是在测试生成的Jar包时,该方法时效。因此在生成Jar包前需要把该行修改成获取生成路径。

项目结构

配置文件范例

generatorConfig.properties

运行命令范例

实例演示

源代码

https://github.com/TedHacker/PracticeArea/tree/master/JavaWebCodeGenerator

本文来自企鹅号 - java一日一条媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏星汉技术

Sqoop简介以及安装

1502
来自专栏Jerry的SAP技术分享

Fiori Launchpad Tile点击后跳转的调试技巧

在SAP Fiori launchpad 里点击某个tile之后,后台会计算出跳转的目标url返回给前台。

1967
来自专栏纯洁的微笑

springcloud(五):熔断监控Hystrix Dashboard和Turbine

Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Com...

3907
来自专栏农夫安全

【笔记】记录Cy牛的任意密码重置姿势

跟第三个有点类似,只判断了接收端和验证码是否一致,未判断接收端是否和用户匹配,因此修改接收端可达到重置目的

1182
来自专栏北京马哥教育

shell脚本执行超时怎么办?

在shell里会有一种不太常见的情况,就是脚本有时候会出现超时的现象。一般来说遇到这种问题,我们都会简单粗暴的采用下面这种脚本来当“超时看门狗“: 这个脚本搭配...

2906
来自专栏开发与安全

linux系统编程之文件与I/O(五):文件的内核结构file和dup实现重定向

一、打开文件内核数据结构 1、一个进程打开两个文件 ? 文件状态标志:读、写、追加、同步、非阻塞等 2、一个进程两次打开同一文件 ? 3、两个进程打开同一文...

1959
来自专栏Java帮帮-微信公众号-技术文章全总结

day02.自动化部署高级命令文本【大数据教程】

day02.自动化部署高级命令文本 一、Iptables教程 1. iptables防火墙简介 Iptables也叫netfilter是Linux下自带的一款免...

3966
来自专栏玩转JavaEE

Spring Cloud中Hystrix仪表盘与Turbine集群监控

Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix...

3834
来自专栏喵了个咪的博客空间

phalcon-入门篇2(HelloWord与PhalconTools)

#phalcon-入门篇2(HelloWord与PhalconTools)# ? 本教程基于phalcon2.0.9版本 ##前言## 先在这里感谢各位phal...

3538
来自专栏醒者呆

结合提供者模式解析Jenkins源码国际化的实现

关键字:提供者模式,设计模式,github,gerrit,源码学习,jenkins,国际化,maven高级,maven插件 本篇文章的源码展示部分由于长...

4306

扫码关注云+社区