代码生成器

来源:互联网 发布:mac桌面壁纸 编辑:程序博客网 时间:2024/04/30 03:49

code-generator是一个java版的代码生成器,它具有以下功能:
    支持从数据库根据数据模型从模板文件生成各种不同的代码。
    支持直接从sql文件生成代码,该方式不需要连接数据库,只要有建表语句即可,建表语句仅支持mysql语法,其他数据库的建表语句未测试过。
    支持单表生成或者批量生成。
    支持从数据库导出数据,支持导出指定表的数据,可导出sql格式,csv格式和自定义格式。


下载地址: https://github.com/xuesong123


1. 单表生成

    单击要生成的表名,右边显示该表的结构,字段类型和映射类型,可以手动编辑生成的目标类型。




2. 批量生成
    在项目初期,可以一次生成所有的代码。单击某个连接下的Tables或者Views,右边显示所有的表或者视图。
    勾选要生成的表,然后单击批量生成,即可生成所有的代码。




3. 数据库连接配置
    在datasource.xml指定连接, 可以配置多个,配置之后,在连接页面将显示所有配置的数据库连接.
    支持任何类型的数据库。


4. 模板定义
    支持任意数量的模板,在template.xml中配置,需要指定模板路径和生成路径。

    <!-- model template -->    <template name="modelTemplate" template="/skin/model.html" outputPath="webapp/gen/java/com/skin/model/${table.className}.java" enabled="true">        <parameter name="packageName" value="com.skin.model" description=""/>    </template>    <!-- daoItfc template -->    <template name="daoItfcTemplate" template="/skin/daoItfc.html" outputPath="webapp/gen/java/com/skin/dao/${table.className}Dao.java" enabled="true">        <parameter name="packageName" value="com.skin.dao" description=""/>    </template>    <!-- daoImpl template -->    <template name="daoImplTemplate" template="/skin/daoImpl.html" outputPath="webapp/gen/java/com/skin/dao/ibatis/${table.className}DaoIBatis.java" enabled="true">        <parameter name="packageName" value="com.skin.dao.ibatis" description=""/>    </template>    <!-- manager template -->    <template name="managerTemplate" template="/skin/manager.html" outputPath="webapp/gen/java/com/skin/service/${table.className}Manager.java" enabled="true">        <parameter name="packageName" value="com.skin.service" description=""/>    </template>    <!-- sqlMap template -->    <template name="sqlMapTemplate" template="/skin/sqlMap.html" outputPath="webapp/gen/sqlmaps/${table.className}SQL.xml" enabled="true"/>


5. 生成文件浏览

    基于web方式的文件浏览器, 可以查看和下载已经生成的代码。如果是在本地运行,直接通过资源浏览器即可查看。


6. 模板文件
    模板文件采用jstl语法编写, 使用自己开发的ayada模板引擎运行。

package ${modelPackageName};import java.io.Serializable;import java.util.Date;/** * <p>Title: ${modelClassName}</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2006</p> * @author xuesong.net * @version 1.0 */public class ${modelClassName} implements Serializable{    private static final long serialVersionUID = 1L;<c:forEach items="${columns}" var="column" varStatus="status">    <c:choose>        <c:when test="${column.javaTypeName == 'String' || column.javaTypeName == 'java.lang.String'}">private String ${column.variableName};</c:when>        <c:when test="${column.javaTypeName == 'Integer' || column.javaTypeName == 'java.lang.Integer'}">private Integer ${column.variableName};</c:when>        <c:when test="${column.javaTypeName == 'Float' || column.javaTypeName == 'java.lang.Float'}">private Float ${column.variableName};</c:when>        <c:when test="${column.javaTypeName == 'Double' || column.javaTypeName == 'java.lang.Double'}">private Double ${column.variableName};</c:when>        <c:when test="${column.javaTypeName == 'Long' || column.javaTypeName == 'java.lang.Long'}">private Long ${column.variableName};</c:when>        <c:when test="${column.javaTypeName == 'java.util.Date'}">private Date ${column.variableName};</c:when>        <c:when test="${column.javaTypeName == 'java.sql.Date'}">private Date ${column.variableName};</c:when>        <c:when test="${column.javaTypeName == 'java.sql.Timestamp'}">private Timestamp ${column.variableName};</c:when>        <c:otherwise>private ${column.javaTypeName} ${column.variableName};</c:otherwise></c:choose></c:forEach>...


数据类型的映射通过com.skin.database.dialect包中的对应类来完成。

如果某些类型生成的代码不满意可以重写对应的dialect。也可以在前台直接编辑表的字段来手动映射。


刚刚修复了几个表格编辑的bug, 新版本已经上传.


2013-04-01 1.0.2

     修复firefox和chrome下表格编辑之后无法提交, 提交到googlecode

2013-04-02 1.0.4

    修复了几个表格编辑bug, 添加输出路径可编辑


已经上传到github: https://github.com/xuesong123。
原创粉丝点击