entity模板

importPackage(java.util);
importPackage(java.io);
importPackage(com.ravali.dbschema.data);

/**
 * 初始化入口
 */
function init(dataModel) {
    var _dataModel = dataModel;
    var cnt = 0;
    if (_dataModel) {
        cnt = _dataModel.getTables().size();
    }
    gen("c:\\entity.java", _dataModel);
    return "" + _dataModel.toString();
}

/**
 * 生成代码的主函数
 */
function gen(outFileName, dataModel) {
    var outFileStr = "";
    outFileStr += genClassName(dataModel);
    outFileStr += "\r\n";

    var cnt = dataModel.getTables().size();
    for (var i = 0; i < cnt; i++) {
        var table = dataModel.getTables().get(i);
        //outFileStr += table.getName() + "\r\n";
        var columns = table.getColumns();
        var gettersetter = "";
        for (var j = 0; j < columns.size(); j++) {
            var c = columns.get(j);
            var oriType = "" + c.getType();
            var comment = "";
            if (oriType == "NUMBER") {
                comment = oriType + "(" + c.getPrecision() + ", " + c.getScale() + ")";
            } else {
                comment = oriType + "(" + c.getLength() + ")";
            }
            var type = convertDbTypeToJavaType(c.getType(), c.getLength(), c.getPrecision(), c.getScale()); 

            var camelVarName = toCamel("" + c.getName());
            /*生成私有变量  begin*/
            outFileStr += "    /**" + "\r\n";
            outFileStr += "    * " + c.getComments() + "\r\n";
            outFileStr += "    */" + "\r\n";
            outFileStr += "    private " + type + "    " + camelVarName + ";    //" + comment + "\r\n\r\n";
            /*生成私有变量  end*/

            /*生成getter, setter方法 begin*/
            gettersetter += "    public " + type +" get" + toFirstUpCamel("" + c.getName()) + "() {"+ "\r\n";
            gettersetter += "        return " + camelVarName + ";"+ "\r\n";
            gettersetter += "    }"+ "\r\n"+ "\r\n";

            gettersetter += "    public void set" + toFirstUpCamel("" + c.getName()) + "(" + type +" " + camelVarName + ") {"+ "\r\n";
            gettersetter += "        this." + camelVarName + " = "+ genAssign(camelVarName, c.getType(), c.getLength(), c.getPrecision(), c.getScale()) + ";\r\n";
            gettersetter += "    }"+ "\r\n"+ "\r\n";
            /*生成getter, setter方法 end*/
        }
        /*生成完整的输出*/
        outFileStr += "\r\n";
        outFileStr += gettersetter;
    }

    outFileStr += genClassEnd();

    writeToFile(outFileName, outFileStr);
}

function genClassName(dataModel) {
    var str = "";
    var pre = "";
    var cnt = dataModel.getTables().size();
    for (var i = 0; i < cnt; i++) {
        var table = dataModel.getTables().get(i);
        str += pre + table.getName();
        pre = "_";
    }
    str = str.toLowerCase();
    str = str.charAt(0).toUpperCase() + str.slice(1);

    //return "public class " + str +"Entity{";
    return "public class " + str +"{";
}

function genAssign(varName, dbDataType, length, precision, scale){
    var retVarName = varName;

    var _dbDataType = "" + dbDataType.toString().toUpperCase();

    switch (_dbDataType) {
    case "VARCHAR":
    case "VARCHAR2":
        retVarName = varName + "==null ? null : " + varName + ".trim()" ;
        break;
    }

    return retVarName;
}

function genClassEnd() {
    return "}";
}

/*****************************************************************************/
function toFirstUpCamel(str){
    var camel = toCamel(str);
    return camel.charAt(0).toUpperCase() + camel.slice(1);
}

function toCamel(str){
return str.toLowerCase()
        // Replaces any - or _ characters with a space
        .replace(/[-_]+/g, ‘ ‘)
        // Removes any non alphanumeric characters
        .replace(/[^\w\s]/g, ‘‘)
        // Uppercases the first character in each group immediately following a space
        // (delimited by spaces)
        .replace(/ (.)/g, function($1) {
            return $1.toUpperCase();
        })
        // Removes spaces
.replace(/ /g, ‘‘);
}

function toCamel_1(str) {
    str = str.toLowerCase();
    var re = /_(\w)/g;
    return str.replace(re, function () {
        var args = arguments;
        return args[1].toUpperCase();
    })
}

function toUnderline(s) {
    return s.replace(/([A-Z])/g, "_$1").toLowerCase();
}

function convertDbTypeToJavaType(dbDataType, length, precision, scale) {

    var retType = "String";
    var _dbDataType = "" + dbDataType.toString().toUpperCase();

    switch (_dbDataType) {
    case "VARCHAR":
    case "VARCHAR2":
        retType = "String";
        break;
    case "NUMBER":
        if (scale > 0 || precision > 24) {
            retType = "BigDecimal";
        } else if (precision > 10) {
            retType = "Long";
        } else if (precision > 4) {
            retType = "Integer";
        } else if (precision == 1) {
            retType = "Boolean";
        } else {
            retType = "Integer";
        }
        break;
    case "DATE":
        retType = "Date";
        break;
    }

    //    if(_dbType == "VARCHAR"){
    //        retType = "String";
    //    } else if(_dbType == "VARCHAR2"){
    //        retType = "String";
    //    }  else if(_dbType == "NUMBER"){
    //        retType = "int";
    //    }

    return retType;
}

function writeToFile(fileName, content) {
    var file = new File(fileName);
    file.createNewFile();
    var writerStream = new FileOutputStream(file);

    var writer = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));
    writer.write(content);
    writer.close();
}
时间: 2024-10-17 01:48:41

entity模板的相关文章

认识CodeSmith

一:下载与激活 1.下载绿色版CodeSmith7.0 http://download.csdn.net/download/laoge/6859701 2.使用激活工具CodesmithKeyGenerator.exe激活CodeSmith7.0 (a)打开软件TemplateEditor.exe,进入CodeSmith Generator窗口,点击Register按钮; (b)先打开激活工具CodesmithKeyGenerator.exe,进入CodeSmith KeyGenerator窗口

[转]黄聪:如何使用CodeSmith批量生成代码

本文转自:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html 在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做一个简单的Demo,并不详细的讲解CodeSmith各个强大的功能,有兴趣的朋友可以打开CodeSmith的帮助文档了解.我只做个抛砖引玉,希望能激起大家更多思

CodeSmith Template Model Output

背景:上学那会儿就接触CodeSmith,是一款非常优秀的代码自动生成工具.以前写过好些基本模版,可惜早不知道扔到哪儿去了,如今只能重新开始,把它捡回来,加油. 效果:将数据库 DataBase 应用到Model模版导出生成基于该库的所有实体 Entity 保存在本地,便于后期开发使用,工具下载 http://pan.baidu.com/s/1o6n2Z94 其中细节有些是拷贝网上的资料,再改过的,仅供学习参考,版权问题,概不负责 代码分享:Model.cst <%@ CodeTemplate

如何使用CodeSmith批量生成代码

在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做一个简单的Demo,并不详细的讲解CodeSmith各个强大的功能,有兴趣的朋友可以打开CodeSmith的帮助文档了解.我只做个抛砖引玉,希望能激起大家更多思想的火花~ 先看看CodeSmith的工作原理: 简单的说:CodeSmith首先会去数据库获取数据库的结构,如各个表的名称,表的字段,表间

如何使用CodeSmith批量生成代码(原创系列教程)

下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做一个简单的Demo,并不详细的讲解CodeSmith各个强大的功能,有兴趣的朋友可以打开CodeSmith的帮助文档了解.我只做个抛砖引玉,希望能激起大家更多思想的火花~ 先看看CodeSmith的工作原理: 简单的说:CodeSmith首先会去数据库获取数据库的结构,如各个表的名称,表的字段,表间的关系等等,之后再根据用户自定义好的模板文件,用数据库结构中的关键字替代模板的动态变量,最终输出并保存为我们需要的目

easypoi导出Excel

1. 添加maven依赖. <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <arti

idea插件esayCode自动生成代码(代码生成器)

1.连接数据库我用的是mysql,当然其他关系型数据库也是可以的 点击idea右方database,接着点击+ 接着输入端口,账号密码,登录就OK啦 如果test connection 按钮点不了则看该页面最下方下载插件就可以了 2.下载esayCode 插件(有的版本idea已经装好,装好自动跳过这步) Plugins --> 搜索安装Easy Code插件   -->  安装之后注意重启idea! 3.生成默认模板代码1.右键对应的表→esaycode→generate code 2.选择

修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

折腾几天记载一下,由于项目实际需要,从edmx生成的实体类能自动继承自定义的基类,这个基类不是从edmx文件中添加的Entityobject. 利用ADO.NET C# POCO Entity Generator With WCF Support生成的tt文件(比如model.tt)中找到 partial class partial class 修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名

转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就看看如何用它来实现批量修改实体框架(Entity Framework)中的类名.我们都知道ADO.NET 实体数据模型中有一种方式是以数据库模型来生成数据模型的,这是个很简便的实体数据模型生成的方式,但是因为微软提供的自定义接口不足,我们无法实现对生成的数据模型实体类批量进行修改(至少我上网找了很久