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 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

使用node-webkit实现打包工具的小结

之前一直使用的hta在开发工具,最近转到node-webkit上了,对比一下二者的优劣势。hta单个文件,体积较小,但有兼容性的问题(兼容ie6、7、8就行了...

1122
来自专栏Golang语言社区

Golang语言学习-并发

goroutine: 由GO运行环境管理的轻量级线程 channel: 有类型的管道,操作符为 <- 数据流向箭头指向的方向 使用make(chan ...

27611
来自专栏pangguoming

Windows下RabbitMQ安装及入门

1.Windows下安装RabbitMQ需要以下几个步骤    (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,...

3437
来自专栏项勇

笔记66 | eclipse/android studio/ADB查看Android应用内存使用情况

1804
来自专栏从零开始的linux

crontab

cron任务分两类: 系统cron: 定义在/etc/crontab 用户cron: 定义在/var/spool...

2883
来自专栏张善友的专栏

应用IBatisNet+Castle进行项目的开发

       最近在做一个项目,项目的需求不够明确,这是做项目的大忌,但是没有办法。项目的架构采用Dotnet平台使用C#进行开发,为了加快项目的开发进度,采用...

17510
来自专栏程序员阿凯

一条大河波浪宽 -- 数据库连接池实现

1034
来自专栏运维小白

Linux基础(day14)

4.1 df命令 df命令介绍 df命令,汇报文件系统磁盘的使用情况 [root@localhost ~]# df 文件系统 1K-块 ...

1927
来自专栏北京马哥教育

Python爬虫基础知识:urllib2的使用技巧

糖豆贴心提醒,本文阅读时间6分钟 前面说到了urllib2的简单入门,下面整理了一部分urllib2的使用细节。 1.Proxy 的设置 urllib2 默认...

2745
来自专栏SpringBoot 核心技术

第十三章:SpringBoot实战SpringDataJPA构建项目总结

2552

扫码关注云+社区