http://sourceforge.net/projects/jbcgen/
快速生成程序代码, 比如Struts, Spring, Jdbc/Hibernate所有前后台的代码.
本工具生成代码的思想是读取数据库中表的结构, 使用JavaScript作为脚本语言编写模板, 生成各种代码或者文件, 支持各种格式的文本文件, Java, C#, PHP 等, 只要是文本文件, 都可以生成, 因为生成什么是由你完全自己定义的. 对数据库的访问是通过插件的形式进行的, 所以易于扩充, 目前只支持Mysql.
本工具开发于2006年, 经过两年的内部使用, 进行了不断改进, 现在把它公布出来, 希望能有更多的人用它, 提意见, 然后把它做的更好.
有时候在项目开发过程中有大量的简单重复劳动, 以Struts, Spring, Jdbc/Hibernate为例, 对数据库中的每张表, 都有其相对应的Dao(2), Service(2), Action(Class+Validation2), Jsp(list+edit+add=3), 需要新建10多个文件/目录, 而这个过程是很枯燥的, 但又会花不少时间, 这个工具的最初开发目的就是自动生成这些文件. 这样,新增一个列表,增删改的模块, 如果不考虑界面需要调整, 就只需要几分钟的时间, 换句话说, 你可以在很短的时间内把所有需要的表自动生成列表,增删改的功能.
答案很简单, 因为这个程序简单容易使用, 而且完全自定义, 能满足不同项目对代码的要求, 只要你能描述出要生成的代码结构和形式的共性,就能把模板写出来.
public class Base<%=getDomainByTable(sys_table_name)%>{
<$
for (var i=0; i<sys_fields.length; i++)
{
var type = getJavaBeanType(sys_fields[i].type);$>
private <%=type%> <%=sys_fields[i].name%>;
<$
}
for (var i=0; i<sys_fields.length; i++)
{
var type = getJavaBeanType(sys_fields[i].type);
$>
public <%=type%> get<%=formatFieldName(sys_fields[i].name)%>(){
return <%=sys_fields[i].name%>;
}
public void set<%=formatFieldName(sys_fields[i].name)%> (<%=type%> <%=sys_fields[i].name%>){
this .<%=sys_fields[i].name%> = <%=sys_fields[i].name%>;
}
<$
}
$>
}
如果当前的表名是:Role, 同时它有role_id int, role_name varchar, description varchar等字段, 那么生成的结果就是:
public class BaseRole{
private int role_id;
private String role_name;
private String description;
public int getRoleId(){
return role_id;
}
public void setRoleId (int role_id){
this .role_id = role_id;
}
public String getRoleName(){
return role_name;
}
public void setRoleName (String role_name){
this .role_name = role_name;
}
public String getDescription(){
return description;
}
public void setDescription (String description){
this .description = description;
}
}
从模板里可以看到, 要生成什么样的代码都是自己可以定制的, 包括方法的起名, 例子里formatFieldName是自己写的JavaScript 方法.
<$
var type_defaultvalue={
'int' :'0' ,
'tinyint' :'false' ,
'varchar' :'""' ,
'datetime' :'new Date()' ,
};
for (var i=0; i<sys_fields.length; i++)
{
var type = sys_fields[i].type;
if (undef(type_defaultvalue[type])){
println("Undefined default value for field type: '" + type+"'" );
}
//the following line has the same result
//println(sys_table_name+".set"+formatFieldName(sys_fields[i].name)+"("+type_defaultvalue[type] + ");");
$>
<%=sys_table_name%>.set<%=formatFieldName(sys_fields[i].name)%>(<%=type_defaultvalue[type] %>);
<$
}
$>
如果有下面的问题, 请和我联系:
最后希望这个工具对你能够有所帮助, 同时减少编码时Copy&Paste的时间
发表于 @ 2009年06月04日 17:44:00 | 评论( loading... ) | 举报| 收藏