日期:2014-05-17  浏览次数:20775 次

[分享]代码生成工具RazorSourceGenerator(支持多种主流DB)
这是一个基于Razor Engine的代码生成器,在强大的Razor语法支持下通过编写模板针对数据库的Schema或者一段SQL的查询结果生成代码。(模板使用Razor C# 语法)

下载地址:http://razorsourcegenerator.codeplex.com/releases/view/96371

运行前提:
安装 .net 4.0 client profile

特性:
1. 支持多种主流数据库(因为使用OleDb获得Schema,理论上OleDb支持的数据库都可以。)
2. 编写模板比较简单,生成代码非常灵活,并且有一定程度的错误提示(这主要归功于 RazorEngine)
    Razor模板内嵌的helper方法,让你编写模板如虎添翼
3. 支持文件名的参数化,可以批量生成代码
4. 可以Append方式生成代码(可将多个Table的信息生成到一个文件中),生成代码更方便
5. 可以通过自定义SQL生成代码

[SQLServer mdf file]代码生成 ibatis JAVA 代码示例:
<模板>

@* 
  Razor注释:编写Template(BySchema)可以使用下面的变量
  @Model.Context.IsFirst, @Model.Context.IsLast, @Model.TableName, @Model.Columns(多行)
*@
/* FileName:  @ConvNameUpper(Model.TableName)Entity.java
 * (c)Copyright XXX Corporation 2012 All Rights Reserved.
 *
 * History
 * Ver           Author          Date            Comment
 * Ver.1.00      XXX             @DateTime.Now.ToString("yyyy/MM/dd")     Created
 */
package xxx.xxx.xxx.common.entity;

import java.math.BigDecimal;
import java.io.Serializable;

public final class @ConvNameUpper(Model.TableName)Entity extends BaseEntity {
private static final long serialVersionUID = 1L;

@foreach(dynamic x in Model.Columns)
{
  var javaType = GetDbType(x.DataType.ToString(), x.NumericScale.ToString());
  @("    //") @x.Description @("\r\n")
  @("    private ") @javaType @(" ") @ConvNameLower(x.ColumnName) @(";\r\n")
}

@foreach(dynamic x in Model.Columns)
{
  var javaType = GetDbType(x.DataType.ToString(), x.NumericScale.ToString());
  @("    /**\r\n") 
  @("     * 「") @x.Description @("」 getter\r\n")
  @("     */\r\n")
  @("    public ") @javaType @(" ") @Getter(x.ColumnName) @("() {\r\n")
  @("        return ") @ConvNameLower(x.ColumnName) @(";\r\n")