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>

    声明输出的内容

  • 相关阅读:
    Unity Shader入门精要学习笔记
    Unity Shader入门精要学习笔记
    zabbix_server部署,启动,及端口未监听问题
    Linux Git服务器安装
    GitHub
    nginx 认证访问web
    Jenkins可持续集成
    svn
    mariadb安装配置
    nginx跟tp5无法加载控制器
  • 原文地址:https://www.cnblogs.com/ilooking/p/4681573.html
Copyright © 2011-2022 走看看