如何在java中构建简单的代码生成器

Ami*_*ail 6 java code-generation

我想在java中构建一个简单的代码生成器,它可以获取数据库连接字符串,然后为数据库中的每个表创建模型层,我不知道我该怎么做,所以如果任何人有任何教程或链接可能帮我完成这项任务,我将感激不尽

提前致谢


我在代码项目上找到了一个很好的例子,它可以获取数据库并为数据库中的表生成良好的代码,但遗憾的是它是用C#编写的,并且还生成C#代码

我不知道生成C#代码然后使用任何转换软件将它们转换为java是正确的,或者正确的方法是尝试修改它以生成java类而不是C#类

顺便说一下,该示例的链接是http://www.codeproject.com/KB/codegen/TierGenerator.aspx

我尽快得到你的建议

提前致谢

Ste*_*n C 12

如果你想实现自己的代码生成器......

根据我的经验 ......使用基于模板的工具(如Velocity或FreeMarker或JET)可以减少编写和维护源代码生成器的工作量.

以下是一些相关链接:

使用StringBuilder/ String连接进行代码生成是很多工作(对于非平凡的代码生成任务)并且往往会给你一堆难以阅读和难以维护的代码.如果与您的用例相关,则生成格式良好(例如,正确缩进,换行)的代码也更加困难.


And*_*s_D 10

对于快速简单的代码生成器:只需将java源代码写入a StringBuilder并将其内容转储到.java文件中即可.我从未将第三方库用于简单的自动生成器:

StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.append("package com.example.beans;\n\n");
sourceBuilder.append("import java.util.*;\n\n");
sourceBuilder.append("public class MyBean {");

for (DBField dbField:getFieldsFromDatabaseModel) {  // this DBField class is pure fiction!
  // bean attribute
  sourceBuilder.append("\tprivate ")
               .append(dbField.getType)
               .append(toFieldName(dbField.getName()))
               .append(" = null;\n");

  // setter method
  sourceBuilder.append("\tpublic void ")
               .append(toSetterName(dbField.getName()))
               .append("(");
               .append(dbField.getType)
               .append(toFieldName(dbField.getName()))
               .append(")\n")
               .append("\t\tthis.")
               .append(dbField.getType)
               .append(" = ")
               .append(dbField.getType)
               .append(";\n\t}");

   // getter method ...
sourceBuilder.append("\t}\n}\n");
Run Code Online (Sandbox Code Playgroud)