• 动软生成代码


    DAL模版
    <#@ template language="c#" HostSpecific="True" #>
    <#@ output extension= ".cs" #>
    <#
    	TableHost host = (TableHost)(Host);	
    	string DbParaHead=host.DbParaHead;
    	string DbParaDbType=host.DbParaDbType;
    	string preParameter=host.preParameter;
    	string ModelSpace = host.NameSpace+".Model."+ host.GetModelClass(host.TableName);
    	ColumnInfo identityKey=host.IdentityKey;
    	string returnValue = "void";
        if (identityKey!=null)
        {         
             returnValue = CodeCommon.DbTypeToCS(identityKey.TypeName);              
        }
    #>
    using System; 
    using System.Text;
    using System.Data.SqlClient;
    using System.Collections.Generic; 
    using System.Data;
    using DBUtility;
    using Model;
    namespace DAL  
    <# if( host.Folder.Length > 0){ #>
    	.<#= host.Folder #>
    <# } #>
    {
    	<# if( host.TableDescription.Length > 0) {#>
     	//<#= host.TableDescription #>
    	<# } #>
    	public partial class DAL<#= host.GetDALClass(host.TableName) #>
    	{
       		     
    		public bool Exists(<#= CodeCommon.GetInParameter(host.Keys, false) #>)
    		{
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("select count(1) from <#= host.TableName #>");
    			strSql.Append(" where ");
    			<# for(int i=0;i< host.Keys.Count;i++)
                {   ColumnInfo key = host.Keys[i]; #>
                    <# if (key.IsPrimaryKey || !key.IsIdentity)
                    {#>
                           strSql.Append(" <#= key.ColumnName#> = <#=preParameter#><#=key.ColumnName#> <# if (i< host.Keys.Count-1 ) {#>and <#}#> ");
                    <#}#>
                <# }#>
    <#= CodeCommon.GetPreParameter(host.Keys, false, host.DbType) #>
    			return DBExecuteUtil.Exists(strSql.ToString(),parameters);
    		}
    		
    				
    		
    		/// <summary>
    		/// 增加一条数据
    		/// </summary>
    		public <#= returnValue #> Add(<#= host.TableName #>Entity model)
    		{
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("insert into <#= host.TableName #>(");			
                strSql.Append("<# for(int i=0;i< host.Fieldlist.Count;i++) {   ColumnInfo c = host.Fieldlist[i]; if (!c.IsIdentity) {#><#= c.ColumnName#><# if (i< host.Fieldlist.Count-1 ) {#>,<#}#><#}}#>");
    			strSql.Append(") values (");
                strSql.Append("<# for(int i=0;i< host.Fieldlist.Count;i++) {   ColumnInfo c = host.Fieldlist[i]; if (!c.IsIdentity) {#><#=preParameter#><#= c.ColumnName#><# if (i< host.Fieldlist.Count-1 ) {#>,<#}#><#}}#>");            
                strSql.Append(") ");            
                <#if (identityKey!=null) {#>strSql.Append(";select @@IDENTITY");<#}#>		
    			SqlParameter[] parameters = {
    			<# for(int i=0;i< host.Fieldlist.Count;i++)
                {   
                ColumnInfo c = host.Fieldlist[i];
                if(c.IsIdentity) continue;
                #>
                new SqlParameter("<#=preParameter#><#=c.ColumnName#>", SqlDbType.<#=CodeCommon.DbTypeLength(host.DbType, c.TypeName, c.Length)#>) <# if (i< host.Fieldlist.Count-1 ) {#>,<#}#>            
                <# }#>  
                };
    			<# foreach (ColumnInfo c in host.Fieldlist) { if(c.IsIdentity) continue;#>            
                parameters[<#= n #>].Value = <# if ("uniqueidentifier" == c.TypeName.ToLower()){#>Guid.NewGuid();<#} else {#>model.<#=c.ColumnName#>;<#} n=n+1; #>
                <# }#>
                
    			<#if (identityKey!=null) {#>   
    			object obj = <#= host.DbHelperName#>.GetSingle(strSql.ToString(),parameters);			
    			if (obj == null)
    			{
    				return 0;
    			}
    			else
    			{
    				<# if ( returnValue=="int" ) 
    				{#>                    
                	return Convert.ToInt32(obj);
                    <#}#>
                    <# if ( returnValue=="long" ) 
    				{#>                    
                	return Convert.ToInt64(obj);
                    <#}#>
                    <# if ( returnValue=="decimal" ) 
    				{#>                    
                	return Convert.ToDecimal(obj);
                    <#}#>                  
    			}			   
                <#} else {#>
                DBExecuteUtil.ExecuteSqlWithParams(strSql.ToString(),parameters);
                <#}#>			
    		}
    		
    		
    		/// <summary>
    		/// 更新一条数据
    		/// </summary>
    		public bool Update(<#= host.TableName #>Entity model)
            {
                StringBuilder strSql=new StringBuilder();
                List<SqlParameter> parameters = new List<SqlParameter>();
                strSql.Append("update <#= host.TableName #> set ");
                <# for(int i=0;i< host.Fieldlist.Count;i++)
                {   ColumnInfo c = host.Fieldlist[i]; #>
                <# if (!c.IsIdentity) {#>  
                <# if(CodeCommon.DbTypeToCS(c.TypeName)=="string") {#>
                if(!string.IsNullOrEmpty(model.<#=c.ColumnName#>)){
                    strSql.Append(" <#= c.ColumnName #> = <#=preParameter#><#=c.ColumnName#> , ");
                    parameters.Add(new SqlParameter("<#=preParameter#><#=c.ColumnName#>",model.<#=c.ColumnName#>));
                    }<# }#>
                <# if(CodeCommon.DbTypeToCS(c.TypeName)=="bool") {#>
                    strSql.Append(" <#= c.ColumnName #> = <#=preParameter#><#=c.ColumnName#> , ");
                    parameters.Add(new SqlParameter("<#=preParameter#><#=c.ColumnName#>",model.<#=c.ColumnName#>));
                    <# }#>
                <# if(CodeCommon.DbTypeToCS(c.TypeName)=="DateTime") {#>
                    if(model.<#=c.ColumnName#>!=null){
                    strSql.Append(" <#= c.ColumnName #> = <#=preParameter#><#=c.ColumnName#> , ");
                    parameters.Add(new SqlParameter("<#=preParameter#><#=c.ColumnName#>",model.<#=c.ColumnName#>));
                    }
                    <# }#>
                <# if(CodeCommon.DbTypeToCS(c.TypeName)=="int"||
                    CodeCommon.DbTypeToCS(c.TypeName)=="long"||
                    CodeCommon.DbTypeToCS(c.TypeName)=="float"||
                    CodeCommon.DbTypeToCS(c.TypeName)=="decimal")
                    {#>
                if(model.<#=c.ColumnName#>!=0){
                    strSql.Append(" <#= c.ColumnName #> = <#=preParameter#><#=c.ColumnName#> , ");
                    parameters.Add(new SqlParameter("<#=preParameter#><#=c.ColumnName#>",model.<#=c.ColumnName#>));
                    }
                    <#}#>
                <#}#>
                <# }#>
                strSql = strSql.Remove(strSql.Length - 2,2);
                strSql.Append(" where <#= CodeCommon.GetWhereParameterExpression(host.Keys, true ,host.DbType) #> ");
                <# for(int i=0;i< host.Keys.Count;i++)
                {   ColumnInfo key = host.Keys[i]; #>
                    <# if (key.IsPrimaryKey || !key.IsIdentity)
                    {#>
                        parameters.Add(new SqlParameter("<#=preParameter#><#=key.ColumnName#>",model.<#=key.ColumnName#>));
                    <#}#>
                <# }#>
                int rows=DBExecuteUtil.ExecuteSqlWithParams(strSql.ToString(),parameters.ToArray());
                if (rows > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
    		
    		
    		/// <summary>
    		/// 删除一条数据
    		/// </summary>
    		public bool Delete(<#=CodeCommon.GetInParameter(host.Keys, true)#>)
    		{
    			
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("delete from <#= host.TableName #> ");
    			strSql.Append(" where <#= CodeCommon.GetWhereParameterExpression(host.Keys, true, host.DbType)#>");
    			<#= CodeCommon.GetPreParameter(host.Keys, true, host.DbType) #>
    
    			int rows=DBExecuteUtil.ExecuteSqlWithParams(strSql.ToString(),parameters);
    			if (rows > 0)
    			{
    				return true;
    			}
    			else
    			{
    				return false;
    			}
    		}
    		
    		<#if (identityKey!=null) {#>
    		/// <summary>
    		/// 批量删除一批数据
    		/// </summary>
    		public bool DeleteList(string <#=identityKey.ColumnName#>list )
    		{
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("delete from <#= host.TableName #> ");
    			strSql.Append(" where ID in ("+<#=identityKey.ColumnName#>list + ")  ");
    			int rows=<#= host.DbHelperName#>.ExecuteSql(strSql.ToString());
    			if (rows > 0)
    			{
    				return true;
    			}
    			else
    			{
    				return false;
    			}
    		}
    		<#}#>
    		
    		
    		/// <summary>
    		/// 得到一个对象实体
    		/// </summary>
    		public <#= host.TableName #>Entity GetModel(<#= CodeCommon.GetInParameter(host.Keys,true) #>)
    		{
    			
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("select <# for(int i=0;i< host.Fieldlist.Count;i++) { #><#= host.Fieldlist[i].ColumnName #><# if(i< host.Fieldlist.Count-1 ) {#>,<# } #> <#}#> ");			
    			strSql.Append("  from <#= host.TableName #> ");
    			strSql.Append(" where <#= CodeCommon.GetWhereParameterExpression(host.Keys, true, host.DbType) #>");
    			<#=CodeCommon.GetPreParameter(host.Keys, true, host.DbType)#>
    			
    			<#= host.TableName #>Entity model=new <#= host.TableName #>Entity();
    			DataTable dt = DBExecuteUtil.querySqlTable(strSql.ToString(),parameters);
    			
    			if(dt.Rows.Count>0)
    			{
    				<# foreach (ColumnInfo c in host.Fieldlist) { #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="int"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="long"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="float"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="DateTime"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="decimal")
    				{#>
    				if(dt.Rows[0]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					model.<#=c.ColumnName#>=<#=CodeCommon.DbTypeToCS(c.TypeName)#>.Parse(dt.Rows[0]["<#=c.ColumnName#>"].ToString());
    				}
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="string") {#>
    				model.<#=c.ColumnName#>= dt.Rows[0]["<#=c.ColumnName#>"].ToString();
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="byte[]") {#>
    				if(dt.Rows[0]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					model.<#=c.ColumnName#>= (byte[])dt.Rows[0]["<#=c.ColumnName#>"];
    				}
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="Guid") {#>
    				if(dt.Rows[0]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					model.<#=c.ColumnName#>= dt.Rows[0]["<#=c.ColumnName#>"].ToString();
    				}
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="bool") {#>
    				if(dt.Rows[0]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					if((dt.Rows[0]["<#=c.ColumnName#>"].ToString()=="1")||(dt.Rows[0]["<#=c.ColumnName#>"].ToString().ToLower()=="true"))
    					{
    					model.<#=c.ColumnName#>= true;
    					}
    					else
    					{
    					model.<#=c.ColumnName#>= false;
    					}
    				}
    				<# } #>
    				<# } #>						
    				return model;
    			}
    			else
    			{
    				return null;
    			}
    		}
    		
    		
    		/// <summary>
    		/// 获得数据列表
    		/// </summary>
    		public DataTable GetList(string strWhere)
    		{
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("select * ");
    			strSql.Append(" FROM <#= host.TableName #> ");
    			if(strWhere.Trim()!="")
    			{
    				strSql.Append(" where "+strWhere);
    			}
    			return DBExecuteUtil.querySqlTable(strSql.ToString());
    		}
    		
    		/// <summary>
    		/// 获得前几行数据
    		/// </summary>
    		public DataTable GetList(int Top,string strWhere,string filedOrder)
    		{
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("select ");
    			if(Top>0)
    			{
    				strSql.Append(" top "+Top.ToString());
    			}
    			strSql.Append(" * ");
    			strSql.Append(" FROM <#= host.TableName #> ");
    			if(strWhere.Trim()!="")
    			{
    				strSql.Append(" where "+strWhere);
    			}
    			strSql.Append(" order by " + filedOrder);
    			return DBExecuteUtil.querySqlTable(strSql.ToString());
    		}
    
       
    	}
    }
    
    <#+
    int n=0;
    #>

    Model模版

    <#@ template language="c#" HostSpecific="True" #>
    <#@ output extension= ".cs" #>
    <#
    	TableHost host = (TableHost)(Host);
    	host.Fieldlist.Sort(CodeCommon.CompareByintOrder);
    #>
    using System; 
    using System.Text;
    using System.Collections.Generic; 
    using System.Data;
    namespace Model<# if( host.Folder.Length > 0) {#>.<#= host.Folder #><# } #>
    {
    	<# if( host.TableDescription.Length > 0) {#>
     	//<#= host.TableDescription #>
    	<# } #>
    	public class <#= host.GetModelClass(host.TableName) #>Entity
    	{
       		     
          	<# foreach (ColumnInfo c in host.Fieldlist)
    		{ #>/// <summary>
    		/// <#= string.IsNullOrEmpty(c.Description) ? c.ColumnName : c.Description #>
            /// </summary>		
            public <#= CodeCommon.DbTypeToCS(c.TypeName) #> <#= c.ColumnName #>{get;set;}        
    		<# } #>
       
    	}
    }

    BLL模版

    <#@ template language="c#" HostSpecific="True" #>
    <#@ output extension= ".cs" #>
    <#
    	TableHost host = (TableHost)(Host);		
    	string ModelSpace = host.NameSpace+".Model."+ host.GetModelClass(host.TableName);
    	string DALSpace= host.NameSpace+".DAL."+ host.GetDALClass(host.TableName);
    	ColumnInfo identityKey=host.IdentityKey;
    	string returnValue = "void";
        if (identityKey!=null)
        {         
             returnValue = CodeCommon.DbTypeToCS(identityKey.TypeName);              
        }
    #>
    using System; 
    using System.Text;
    using System.Collections.Generic; 
    using System.Data;
    using DAL;
    using Model;
    namespace BLL <# if( host.Folder.Length > 0){ #>.<#= host.Folder #><# } #>
    {
    	<# if( host.TableDescription.Length > 0) {#>
     	//<#= host.TableDescription #>
    	<# } #>
    	public partial class BLL<#= host.GetBLLClass(host.TableName) #>
    	{
       		     
    		private readonly DAL<#= host.TableName #> dal=new DAL<#= host.TableName #>();
    		public BLL<#= host.GetBLLClass(host.TableName) #>()
    		{}
    		
    		#region  Method
    		/// <summary>
    		/// 是否存在该记录
    		/// </summary>
    		public bool Exists(<#= CodeCommon.GetInParameter(host.Keys, false) #>)
    		{
    			return dal.Exists(<#= CodeCommon.GetFieldstrlist(host.Keys, false)#>);
    		}
    
    		/// <summary>
    		/// 增加一条数据
    		/// </summary>
    		public <#= returnValue #>  Add(<#= host.TableName #>Entity model)
    		{
    			<#if (identityKey!=null) {#>
    			return dal.Add(model);
    			<#} else {#>
    			dal.Add(model);
    			<#}#>			
    		}
    
    		/// <summary>
    		/// 更新一条数据
    		/// </summary>
    		public bool Update(<#= host.TableName #>Entity model)
    		{
    			return dal.Update(model);
    		}
    
    		/// <summary>
    		/// 删除一条数据
    		/// </summary>
    		public bool Delete(<#=CodeCommon.GetInParameter(host.Keys, true)#>)
    		{
    			
    			return dal.Delete(<#=CodeCommon.GetFieldstrlist(host.Keys, true)#>);
    		}
    		<#if (identityKey!=null) {#>
    		/// <summary>
    		/// 批量删除一批数据
    		/// </summary>
    		public bool DeleteList(string <#=identityKey.ColumnName#>list )
    		{
    			return dal.DeleteList(<#=identityKey.ColumnName#>list );
    		}
    		<#}#>
    
    		/// <summary>
    		/// 得到一个对象实体
    		/// </summary>
    		public <#= host.TableName #>Entity GetModel(<#= CodeCommon.GetInParameter(host.Keys,true) #>)
    		{
    			
    			return dal.GetModel(<#=CodeCommon.GetFieldstrlist(host.Keys, true)#>);
    		}
    
    		/// <summary>
    		/// 得到一个对象实体,从缓存中
    		/// </summary>
    		//public <#= host.TableName #>Entity GetModelByCache(<#= CodeCommon.GetInParameter(host.Keys,true) #>)
    		//{
    		//	
    		//	string CacheKey = "<#= host.TableName #>Model-" + <#=CodeCommon.GetFieldstrlistAdd(host.Keys, true)#>;
    		//	object objModel = Common.DataCache.GetCache(CacheKey);
    		//	if (objModel == null)
    		//	{
    		//		try
    		//		{
    		//			objModel = dal.GetModel(<#=CodeCommon.GetFieldstrlist(host.Keys, true)#>);
    		//			if (objModel != null)
    		//			{
    		//				int ModelCache = Common.ConfigHelper.GetConfigInt("ModelCache");
    		//				Common.DataCache.SetCache(CacheKey, objModel, DateTime.Now.AddMinutes(ModelCache), TimeSpan.Zero);
    		//			}
    		//		}
    		//		catch{}
    		//	}
    		//	return (<#= host.TableName #>Entity)objModel;
    		//}
    
    		/// <summary>
    		/// 获得数据列表
    		/// </summary>
    		public DataTable GetList(string strWhere)
    		{
    			return dal.GetList(strWhere);
    		}
    		/// <summary>
    		/// 获得前几行数据
    		/// </summary>
    		public DataTable GetList(int Top,string strWhere,string filedOrder)
    		{
    			return dal.GetList(Top,strWhere,filedOrder);
    		}
    		/// <summary>
    		/// 获得数据列表
    		/// </summary>
    		public List<<#= host.TableName #>Entity> GetModelList(string strWhere)
    		{
    			DataTable dt = dal.GetList(strWhere);
    			return DataTableToList(dt);
    		}
    		/// <summary>
    		/// 获得数据列表
    		/// </summary>
    		public List<<#= host.TableName #>Entity> DataTableToList(DataTable dt)
    		{
    			List<<#= host.TableName #>Entity> modelList = new List<<#= host.TableName #>Entity>();
    			int rowsCount = dt.Rows.Count;
    			if (rowsCount > 0)
    			{
    				<#= host.TableName #>Entity model;
    				for (int n = 0; n < rowsCount; n++)
    				{
    					model = new <#= host.TableName #>Entity();					
    					<# foreach (ColumnInfo c in host.Fieldlist) { #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="int"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="long"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="float"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="DateTime"||
    				CodeCommon.DbTypeToCS(c.TypeName)=="decimal")
    				{#>
    				if(dt.Rows[n]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					model.<#=c.ColumnName#>=<#=CodeCommon.DbTypeToCS(c.TypeName)#>.Parse(dt.Rows[n]["<#=c.ColumnName#>"].ToString());
    				}
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="string") {#>
    				model.<#=c.ColumnName#>= dt.Rows[n]["<#=c.ColumnName#>"].ToString();
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="byte[]") {#>
    				if(dt.Rows[n]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					model.<#=c.ColumnName#>= (byte[])dt.Rows[n]["<#=c.ColumnName#>"];
    				}
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="Guid") {#>
    				if(dt.Rows[n]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					model.<#=c.ColumnName#>= dt.Rows[n]["<#=c.ColumnName#>"].ToString();
    				}
    				<# } #>
    				<# if(CodeCommon.DbTypeToCS(c.TypeName)=="bool") {#>
    				if(dt.Rows[n]["<#=c.ColumnName#>"].ToString()!="")
    				{
    					if((dt.Rows[n]["<#=c.ColumnName#>"].ToString()=="1")||(dt.Rows[n]["<#=c.ColumnName#>"].ToString().ToLower()=="true"))
    					{
    					model.<#=c.ColumnName#>= true;
    					}
    					else
    					{
    					model.<#=c.ColumnName#>= false;
    					}
    				}
    				<# } #>
    				<# } #>		
    				
    					modelList.Add(model);
    				}
    			}
    			return modelList;
    		}
    
    		/// <summary>
    		/// 获得数据列表
    		/// </summary>
    		public DataTable GetAllList()
    		{
    			return GetList("");
    		}
    #endregion
       
    	}
    }

    WEB模版

    		<Rows>
    		<# int i=0;#>
    		<# foreach (ColumnInfo c in host.Fieldlist)
    		{ #>
    		<# if(i%2==0){#>
    		<ext:FormRow ID="frow_<#= c.ColumnName #>" runat="server">
    		<# } #><Items>
            <# if(CodeCommon.DbTypeToCS(c.TypeName)=="DateTime") { #>
            <ext:DatePicker runat="server" Required="true" Label="<#= c.ColumnName #>" EmptyText="限制范围的日期" ID="dp<#= c.ColumnName #>" ShowRedStar="True" Width="200px"></ext:DatePicker>
            <#} else #>
            <# if(CodeCommon.DbTypeToCS(c.TypeName)=="bool") { #>
            <ext:CheckBoxList runat="server" ID="chkl<#= c.ColumnName #>" Label="chk<#= c.ColumnName #>" ShowLabel="true" Width="200px"><ext:CheckItem Text="<#= c.ColumnName #>" /></ext:CheckBoxList>
            <#} else #>
            <# if(CodeCommon.DbTypeToCS(c.TypeName)=="string") { #>
            <ext:TextBox ID="txt<#= c.ColumnName #>" runat="server" Required="true" Label="<#= c.Description == "" ? c.ColumnName : c.Description #>" ShowLabel="true" Width="200px"></ext:TextBox>
            <#} else #>
            <# if(CodeCommon.DbTypeToCS(c.TypeName)=="int") { #>
            <ext:TextBox ID="txt<#= c.ColumnName #>" runat="server" Required="true" RegexPattern="NUMBER" Label="<#= c.Description == "" ? c.ColumnName : c.Description #>" ShowLabel="true" Width="200px"></ext:TextBox>
            <#}#></Items>      
    		<# if(i%2==1||i==host.Fieldlist.Count-1){#>
            </ext:FormRow>
            <# } #>
            <# i++; #>
    		<# } #>
    		<ext:FormRow runat="server"><Items><ext:Button ConfirmText="确认保存?" Id="btnSubmit" Text="" ValidateForms="Form1" runat="server"></ext:Button></Items></ext:FormRow>
    		</Rows>
    		<script src="/js/calendar1.js" type="text/javascript"></script>
  • 相关阅读:
    网页设计~老生常谈~浏览器兼容2个主要问题的解决
    谈谈网页功能测试
    从PMP学习中浅谈公司行政工作
    肉肉谈对需求设计的想法到底是功能驱动界面?还是界面驱动功能?
    jndi和rmi学习
    mysql赋值变量:=的使用
    用Cookies和HashTable制作购物车
    nginx实现简单的反向代理
    .net Form认证扩展保存 Object 类型
    基于Docker搭建私有镜像仓库
  • 原文地址:https://www.cnblogs.com/TivonStone/p/2983346.html
Copyright © 2020-2023  润新知