CodeSmith简单示例

本文介绍了一种使用模板语言自动生成数据库操作代码的方法,包括实体类、插入和更新语句的生成。通过设置数据库参数和操作类型,可以快速生成对应的操作代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

① 实体类
<%-- 
Name:Table Enum
Author: ZLH
Description:Create an enum of table 
--%>
<%-- 引入模板--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Java" Debug="False" Description="CreateAnEnumOfTable" %>
<%--声明数据库的参数,在左下角的Database属性中,选择要操作的数据库名称--%>
<%@ Property Category="Database" Name="Table" Type="SchemaExplorer.TableSchema" Optional="False" Description="Database the talble enums will come from." %>
<%-- 操作数据库 --%>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%--SourceDatabase, 是你选择数据库的属性类,涵盖数据库的名称,创建时间,字符串链接,描述等等,自己可以点点看 --%>
@Data
public class <%=Table %>{
<%
    for(int i=0;i<Table.Columns.Count;i++){
        Response.WriteLine("\tprivate {0} {1};",FieldType(Table.Columns[i].DataType),Table.Columns[i].Name);
    }
%>
}
<%-- 字段类型转换 --%>
<script runat="template">    
    public string FieldType(System.Data.DbType dbType){
        switch (dbType){
            case DbType.AnsiString:
                return "String";
            case DbType.AnsiStringFixedLength:
                return "String";
            case DbType.Binary:
                return "Integer[]";
            case DbType.Boolean:
                return "Boolean";
            case DbType.Byte:
                return "Integer";
            case DbType.Currency:
                return "Double";
            case DbType.Date:
                return "Date";
            case DbType.DateTime:
                return "Date";
            case DbType.DateTime2:
                return "Date";
            case DbType.DateTimeOffset:
                return "Date";
            case DbType.Decimal:
                return "Double";
            case DbType.Double:
                return "Double";
            case DbType.Guid:
                return "Guid";
            case DbType.Int16:
                return "Integer";
            case DbType.Int32:
                return "Integer";
            case DbType.Int64:
                return "Integer";
            case DbType.Object:
                return "Object";
            case DbType.SByte:
                return "Integer";
            case DbType.Single:
                return "Double";
            case DbType.String:
                return "String";
            case DbType.StringFixedLength:
                return "String";
            case DbType.Time:
                return "Date";
            case DbType.UInt16:
                return "Integer";
            case DbType.UInt32:
                return "Integer";
            case DbType.UInt64:
                return "Integer";
            case DbType.VarNumeric:
                return "Double";
            case DbType.Xml:
                return "String";
            default:
                return "Object";
        }
    }
</script>
② insert语句
<%-- 
CodeSmith: Templates
Author: ZLH
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="JAVA" Description="Template description here." %>
<%@ Property Name="Columns" Type="SchemaExplorer.ColumnSchemaCollection" Default="" Optional="True" Category="Strings" Description="--表--" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Design" %>
<%@ Import Namespace="SchemaExplorer" %>
<%
    Response.Write("insert into {0}(",Columns[0].Table);
    for(int i=0;i<Columns.Count;i++){
        Response.Write(Columns[i].Name);
        if(i<Columns.Count-1){
            Response.Write(",");
        }
    }
    Response.Write(")\nvalues(");
    for(int i=0;i<Columns.Count;i++){
        Response.Write("{0}{1}{2}","#{",Columns[i].Name,"}");
        if(i<Columns.Count-1){
            Response.Write(",");
        }
    }
    Response.Write(")");
%>
③ update语句
<%-- 
CodeSmith: Templates
Author: ZLH
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="JAVA" Description="Template description here." %>
<%@ Property Name="Columns" Type="SchemaExplorer.ColumnSchemaCollection" Default="" Optional="True" Category="Strings" Description="--表--" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Design" %>
<%@ Import Namespace="SchemaExplorer" %>
<%
    Response.Write("update {0} set ",Columns[0].Table);
    for(int i=0;i<Columns.Count;i++){
        Response.Write("{0}={1}{2}{3}",Columns[i].Name,"#{",Columns[i].Name,"}");
        if(i<Columns.Count-1){
            Response.Write(",");
        }
    }
    Response.Write(" where {0}={1}{2}{3}",Columns[0].Table.Columns[0].Name,"#{",Columns[0].Table.Columns[0].Name,"}");

%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值