zoukankan      html  css  js  c++  java
  • CodeSmith编写ibatisnet生成模板

    首先新建一个实例模板文件

    <%@ CodeTemplate Language="C#" TargetLanguage="Xml" ResponseEncoding="UTF-8" Description="Template description here." %>

    声明该模板文件使用的模板语言

    <%@ Property Name="assemblyname" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the mapping file is based on" %>

    声明属性的作用是为了给用户自定义声明

    image

    <%@ Assembly Name="SchemaExplorer" %>
    <%@ Assembly Name="System.Data" %>
    <%@ Import Namespace="SchemaExplorer" %>
    <%@ Import Namespace="System.Data" %>
    <script runat="template">
        public string ToLowercase(string str)
        {
            str = str.ToLower();    
            return str;
        }
        
    </script>

    script标签一般是用来声明方法

    <?xml version="1.0" encoding="UTF-8" ?> 
    <sqlMap namespace="<%=SourceTable.Name%>" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <alias>
            <typeAlias alias="<%=SourceTable.Name%>" type="<%=assemblyname%>.<%=SourceTable.Name%>, <%=assemblyname%>" />
        </alias>
        <resultMaps>
            <resultMap id="SelectResult" class="<%=SourceTable.Name%>">
                <%for(int i=0;i<SourceTable.Columns.Count;i++){%>
                <result property="<%=SourceTable.Columns[i].Name%>" column="<%=ToLowercase(SourceTable.Columns[i].Name)%>" />
                <%}%>
            </resultMap>
        </resultMaps>
        
        <statements>
            <select id="Select<%=SourceTable.Name%>" parameterClass="int" resultMap="SelectResult">
                Select 
                    <%for(int i=0;i<SourceTable.Columns.Count;i++){%>
                      <%=ToLowercase(SourceTable.Columns[i].Name)%><%if(i<SourceTable.Columns.Count - 1){%>,<%}%>
                    <%}%>
                From <%=SourceTable.Name%>
                <dynamic prepend="WHERE">
                    <isParameterPresent>
                    <% if(SourceTable.HasPrimaryKey){ %>
                    <%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
                        <%=ToLowercase(SourceTable.PrimaryKey.MemberColumns[i].Name)%>=#<%=SourceTable.PrimaryKey.MemberColumns[i].Name%># <%if(i<SourceTable.PrimaryKey.MemberColumns.Count-1){%>AND<%}%>
                    <%}%>
                    <% } %>
                    </isParameterPresent>
                </dynamic>
            </select>
            
            <select id="BaseSelect<%=SourceTable.Name%>" parameterClass="int" resultMap="SelectResult">
                Select 
                    <%for(int i=0;i<SourceTable.Columns.Count;i++){%>
                      <%=ToLowercase(SourceTable.Columns[i].Name)%><%if(i<SourceTable.Columns.Count - 1){%>,<%}%>
                    <%}%>
                From <%=SourceTable.Name%>
            </select>
            
            <select id="ChildSelect<%=SourceTable.Name%>" parameterClass="int" resultMap="SelectResult" extends="BaseSelect<%=SourceTable.Name%>">
                
            </select>
                    
            <insert id="Insert<%=SourceTable.Name%>" parameterClass="<%=SourceTable.Name%>">
                Insert Into <%=SourceTable.Name%> (
                    <%for(int i=0;i<SourceTable.Columns.Count;i++){%>
                      <%=ToLowercase(SourceTable.Columns[i].Name)%><%if(i<SourceTable.Columns.Count - 1){%>,<%}%>
                    <%}%>
                )Values(
                    <%for(int i=0;i<SourceTable.Columns.Count;i++){%>
                     #<%=SourceTable.Columns[i].Name%>#<%if(i<SourceTable.Columns.Count - 1){%>,<%}%>
                    <%}%>
                )
            </insert>
            
            <update id="Update<%=SourceTable.Name%>" parameterClass="<%=SourceTable.Name%>">
                Update <%=SourceTable.Name%> Set 
                    <%for(int i=0;i<SourceTable.Columns.Count;i++){%>
                    <%=ToLowercase(SourceTable.Columns[i].Name)%>=#<%=SourceTable.Columns[i].Name%>#<%if(i<SourceTable.Columns.Count - 1){%>,<%}%>
                    <%}%>
                <dynamic prepend="WHERE">
                    <isParameterPresent>
                    <% if(SourceTable.HasPrimaryKey){ %>
                    <%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
                        <%=ToLowercase(SourceTable.PrimaryKey.MemberColumns[i].Name)%>=#<%=SourceTable.PrimaryKey.MemberColumns[i].Name%>#<%if(i<SourceTable.PrimaryKey.MemberColumns.Count-1){%>AND<%}%>
                    <%}%>
                    <% } %>
                    </isParameterPresent>
                </dynamic>
            </update>
            
            <delete id="Delete<%=SourceTable.Name%>" parameterClass="int">
                Delete From <%=SourceTable.Name%>
                <dynamic prepend="WHERE">
                    <isParameterPresent>
                    <% if(SourceTable.HasPrimaryKey){ %>
                    <%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
                        <%=ToLowercase(SourceTable.PrimaryKey.MemberColumns[i].Name)%>=#<%=SourceTable.PrimaryKey.MemberColumns[i].Name%>#<%if(i<SourceTable.PrimaryKey.MemberColumns.Count-1){%>AND<%}%>
                    <%}%>
                    <% } %>
                    </isParameterPresent>
                </dynamic>
            </delete>
            
        </statements>
    </sqlMap>

    声明输出的内容

  • 相关阅读:
    【Android 应用开发】 Android 相关代码规范 更新中 ...
    【IOS 开发】Object
    【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译
    【IOS 开发】Object
    Unity3D 学习教程 14 C# 旋转镜头
    Unity3D 学习教程 13 C# 销毁炮弹
    Unity3D 学习教程 12 C# 发射炮弹
    Unity3D 学习教程 11 c#脚本控制摄像头
    Unity3D 学习教程 10 复制物体
    Unity3D 学习教程 9 旋转 放大 移动 物体
  • 原文地址:https://www.cnblogs.com/ilooking/p/4681573.html
Copyright © 2011-2022 走看看