起因项目中需要根据数据库表写很多Meta、Dao、Service代码,其中很多代码都是重复而繁琐的因此如果有一个模板代码的生成器,就可以一定程度提高开发效率目标可配置生成Java Web项目中Dao、Meta、Service层模板代码的生成器。
代码框架
设计思路项目参考Mybatis generator生成代码的过程,具体步骤分为以下5步逻辑步骤解析命令行解析配置文件获取数据表信息生成配置信息生成文件代码设计命令解析类 ShellRunner该类负责解析命令行的命令,解析配置文件并封装所需的数据给代码生成类。
可解析命令有-configfile:指定配置文件所在路径和-overwrite:是否重写目标文件。配置文件的配置项有:
代码生成类 CodeGenerator该类负责连接数据库,查询数据表的表信息,将SQL类型映射成Java类型并封装所需的数据给文件生成类。
通过以上几行代码,rs变量中已经获得目标数据表的表信息databaseMetaData.getColumns方法的实质是执行了SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME="tableName"。
语句。在结果集中,后续处理大致需要以下表信息列。
最后通过JavaTypeResolver中的类型映射(Map typeMap)和StringUtils中的驼峰命名转换(getCamelCaseString
)将SQL信息转换成Java信息。文件生成类 FileGenerator该类通过FreeMarker模板引擎组合数据成目标代码文件。主逻辑如下:
注意在测试中,Class.class.getClass().getResource("/").getPath();该方法可以获取项目根目录,但是在测试生成的Jar包时,该方法时效因此在生成Jar包前需要把该行修改成。
new File("").getAbsolutePath();获取生成路径。项目结构
配置文件范例generatorConfig.properties
运行命令范例
实例演示
源代码https://github.com/TedHacker/PracticeArea/tree/master/JavaWebCodeGenerator推荐一个不错的学习公众号,有兴趣的可以多学学:
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。