分享一套简单的CodeSmith三层模板
如果要连接mysql,需要安装驱动:
https://cdn.mysql.com//Downloads/Connector-Net/mysql-connector-net-8.0.12.msi
连接字符串
server=172.20.102.148;port=3306;database=metis_dev;uid=root;pwd=123456;SslMode = none;
这里需要注意ssl的设置,否则会报错
model-java
<%-- Name: Author: maomao Created:<%=Datetime.Now.ToShortDateString() %> Description: --%> <%@ Template Language="C#" TargetLanguage="Java" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="System.Collections"%> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="package" Type="String" Description="包名" Category="包名" %> package <%=package %>.domain; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; public class <%=convertClassName(SourceTable.Name) %> { <%foreach(ColumnSchema column in SourceTable.Columns){ %> <%if(column.DataType==DbType.DateTime){ %> @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") <%} %> private <%=convertoJavaType(column.SystemType.ToString()) %> <%=convertCamel(column.Name) %>; <%} %> } <script runat="template"> private string convertoJavaType(string name){ switch(name){ case "System.Int64": return "Long"; case "System.Int32": return "Integer"; case "System.UInt32": return "Integer"; case "System.Int16": return "Integer"; case "System.SByte": return "Integer"; case "System.String": return "String"; case "System.DateTime": return "Date"; default: return "unknown"; } } private string convertClassName(string name){ string[] strs=name.Split(new string[1]{"_"},StringSplitOptions.RemoveEmptyEntries); string result=""; for(int i=0;i<strs.Length;i++){ string firstLetter=strs[i].Substring(0,1); string left=strs[i].Substring(1); result+=firstLetter.ToUpper()+left; } return result; } private string convertCamel(string name){ string[] strs=name.Split(new string[1]{"_"},StringSplitOptions.RemoveEmptyEntries); string result=strs[0]; for(int i=1;i<strs.Length;i++){ string firstLetter=strs[i].Substring(0,1); string left=strs[i].Substring(1); result+=firstLetter.ToUpper()+left; } return result; } </script>
mapper-java
<%-- Name: Author: maomao Created:<%=Datetime.Now.ToShortDateString() %> Description: --%> <%@ Template Language="C#" TargetLanguage="Java" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="System.Collections"%> <%@ Import Namespace="System.Collections.Generic" %> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Text" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="package" Type="String" Description="包名" Category="包名" %> package <%=package %>.interfaces; import <%=package %>.domain.<%=convertClassName(SourceTable.Name) %>; import <%=package %>.interfaces.provider.<%=convertClassName(SourceTable.Name) %>Provider; import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; @Mapper public interface <%=convertClassName(SourceTable.Name) %>Mapper { @Insert("insert into <%=SourceTable.Name %>(<%=getInsertColumns(SourceTable) %>) values (<%=getInsertColumnValues(SourceTable) %>) ") @Options(useGeneratedKeys = true,keyProperty = "id") int insert(<%=convertClassName(SourceTable.Name) %> entity); @Update("update <%=SourceTable.Name %> set <%=getUpdateColumnValues(SourceTable) %> where id=#{id}") void update(<%=convertClassName(SourceTable.Name) %> entity); @Delete("delete from <%=SourceTable.Name %> where id = #{id}") void deleteById(int id); @SelectProvider(type = <%=convertClassName(SourceTable.Name) %>Provider.class,method = "selectWithParam") @Results({ <%foreach(ColumnSchema column in SourceTable.Columns){ %> @Result(column = "<%=column.Name %>",property = "<%=convertCamel(column.Name) %>"), <%} %> }) List<<%=convertClassName(SourceTable.Name) %>> selectByMap(Map<String,Object> map); @Select("select * from <%=SourceTable.Name %> where id=#{id}") <%=convertClassName(SourceTable.Name) %> selectById(int id); } <script runat="template"> private string convertoJavaType(string name){ switch(name){ case "System.Int64": return "Long"; case "System.Int32": return "Integer"; case "System.UInt32": return "Integer"; case "System.Int16": return "Integer"; case "System.SByte": return "Integer"; case "System.String": return "String"; case "System.DateTime": return "Date"; default: return "unknown"; } } private string convertClassName(string name){ string[] strs=name.Split(new string[1]{"_"},StringSplitOptions.RemoveEmptyEntries); string result=""; for(int i=0;i<strs.Length;i++){ string firstLetter=strs[i].Substring(0,1); string left=strs[i].Substring(1); result+=firstLetter.ToUpper()+left; } return result; } private string convertCamel(string name){ string[] strs=name.Split(new string[1]{"_"},StringSplitOptions.RemoveEmptyEntries); string result=strs[0]; for(int i=1;i<strs.Length;i++){ string firstLetter=strs[i].Substring(0,1); string left=strs[i].Substring(1); result+=firstLetter.ToUpper()+left; } return result; } private string getInsertColumns(TableSchema table){ List<string> list=new List<string>(); foreach(var columnSchema in table.Columns){ if(!columnSchema.IsPrimaryKeyMember){ list.Add(columnSchema.Name); } } return string.Join(",",list.ToArray()); } private string getInsertColumnValues(TableSchema table){ List<string> list=new List<string>(); foreach(var columnSchema in table.Columns){ if(!columnSchema.IsPrimaryKeyMember){ list.Add("#{"+convertCamel(columnSchema.Name)+"}"); } } return string.Join(",",list.ToArray()); } private string getUpdateColumnValues(TableSchema table){ List<string> list=new List<string>(); foreach(var columnSchema in table.Columns){ if(!columnSchema.IsPrimaryKeyMember){ list.Add(columnSchema.Name+"=#{"+convertCamel(columnSchema.Name)+"}"); } } return string.Join(",",list.ToArray()); } </script>
provider-java
<%-- Name: Author: maomao Created:<%=Datetime.Now.ToShortDateString() %> Description: --%> <%@ Template Language="C#" TargetLanguage="Java" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="System.Collections"%> <%@ Import Namespace="System.Collections.Generic" %> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Text" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="package" Type="String" Description="包名" Category="包名" %> package <%=package %>.interfaces.provider; import <%=package %>.domain.<%=convertClassName(SourceTable.Name) %>; import org.apache.ibatis.jdbc.SQL; import java.util.Map; public class <%=convertClassName(SourceTable.Name) %>Provider { public String selectWithParam(Map<String, Object> param) { return new SQL() { { SELECT("*"); FROM("<%=SourceTable.Name %>"); <%foreach(ColumnSchema column in SourceTable.Columns){ %> if (param.get("<%=convertCamel(column.Name) %>") != null) { WHERE(" <%=column.Name %>=#{<%=convertCamel(column.Name) %>} "); } <%} %> } }.toString(); } } <script runat="template"> private string convertoJavaType(string name){ switch(name){ case "System.Int64": return "Long"; case "System.Int32": return "Integer"; case "System.UInt32": return "Integer"; case "System.Int16": return "Integer"; case "System.SByte": return "Integer"; case "System.String": return "String"; case "System.DateTime": return "Date"; default: return "unknown"; } } private string convertClassName(string name){ string[] strs=name.Split(new string[1]{"_"},StringSplitOptions.RemoveEmptyEntries); string result=""; for(int i=0;i<strs.Length;i++){ string firstLetter=strs[i].Substring(0,1); string left=strs[i].Substring(1); result+=firstLetter.ToUpper()+left; } return result; } private string convertCamel(string name){ string[] strs=name.Split(new string[1]{"_"},StringSplitOptions.RemoveEmptyEntries); string result=strs[0]; for(int i=1;i<strs.Length;i++){ string firstLetter=strs[i].Substring(0,1); string left=strs[i].Substring(1); result+=firstLetter.ToUpper()+left; } return result; } private string getInsertColumns(TableSchema table){ List<string> list=new List<string>(); foreach(var columnSchema in table.Columns){ if(!columnSchema.IsPrimaryKeyMember){ list.Add(columnSchema.Name); } } return string.Join(",",list.ToArray()); } private string getInsertColumnValues(TableSchema table){ List<string> list=new List<string>(); foreach(var columnSchema in table.Columns){ if(!columnSchema.IsPrimaryKeyMember){ list.Add("#{"+convertCamel(columnSchema.Name)+"}"); } } return string.Join(",",list.ToArray()); } private string getUpdateColumnValues(TableSchema table){ List<string> list=new List<string>(); foreach(var columnSchema in table.Columns){ if(!columnSchema.IsPrimaryKeyMember){ list.Add(columnSchema.Name+"=#{"+convertCamel(columnSchema.Name)+"}"); } } return string.Join(",",list.ToArray()); } </script>
Model:
<%-- Name: Author: maomao Created:<%=Datetime.Now.ToShortDateString() %> Description: --%> <%@ Template Language="C#" TargetLanguage="C#" Inherits="SqlCodeTemplate" %> <%@ Assembly Name="Codesmith.BaseTemplates" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="CodeSmith.BaseTemplates" %> <%@ Import Namespace="System.Collections" %> <%@ Import Namespace="System.Text" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="NameSpace" Type="String" Description="命名空间" %> using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; namespace <%=NameSpace %> { [Serializable] public partial class <%=ConvertTablename2Pascal(SourceTable) %> { #region 属性 <%foreach(ColumnSchema col in SourceTable.Columns){ %> /// <summary> /// <%=col.Description %> /// </summary> public <%=GetCSharpVariableType(col) %> <%=col.Name %> {get;set;} <%} %> #endregion public <%=ConvertTablename2Pascal(SourceTable) %>() { } public <%=ConvertTablename2Pascal(SourceTable) %>(DataRow dr) { #region 属性 <%foreach(ColumnSchema col in SourceTable.Columns){ %> if(dr["<%=col.Name %>"]!=DBNull.Value) { this.<%=col.Name %>= (<%=GetCSharpVariableType(col) %>)dr["<%=col.Name %>"]; } <%} %> #endregion } } } <script runat="template"> public string Convert2Pascal(ColumnSchema col) { StringBuilder sb = new StringBuilder(); string[] strs = col.Name.Split(new char[] { '_'}); foreach (string str in strs) { sb.Append(str.Substring(0,1).ToUpper()); sb.Append(str.Substring(1)); } return sb.ToString(); } public string ConvertTablename2Pascal(TableSchema table) { StringBuilder sb = new StringBuilder(); string[] strs = table.Name.Split(new char[] { '_'}); int index=0; foreach (string str in strs) { if(index==0) { index++; continue; } sb.Append(str.Substring(0,1).ToUpper()); sb.Append(str.Substring(1)); } return sb.ToString(); } </script>
<%-- Name: Author: maomao Created:<%=Datetime.Now.ToShortDateString() %> Description: --%> <%@ Template Language="C#" TargetLanguage="C#" Inherits="SqlCodeTemplate" %> <%@ Assembly Name="Codesmith.BaseTemplates" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="CodeSmith.BaseTemplates" %> <%@ Import Namespace="System.Collections" %> <%@ Import Namespace="System.Text" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="NameSpace" Type="String" Description="命名空间" %> using System.ComponentModel.DataAnnotations.Schema; using System.Data.Entity.ModelConfiguration; namespace <%=NameSpace %> { public partial class <%=SourceTable.Name %>Map:EntityTypeConfiguration<<%=SourceTable.Name %>> { public <%=SourceTable.Name %>Map() { this.ToTable("<%=SourceTable.Name %>"); <%if(SourceTable.HasPrimaryKey){ %> this.HasKey(t => new { <%foreach(ColumnSchema col in SourceTable.Columns){ %> <%if(col.IsPrimaryKeyMember){ %> t.<%=col.Name %>, <%} %> <%} %> }); <%} %> <%foreach(ColumnSchema col in SourceTable.Columns){ %> <%if((bool)col.ExtendedProperties["CS_isIdentity"].Value){ %> this.Property(t => t.<%=col.Name %>).HasColumnName("<%=col.Name %>").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); <%}else{ %> <%if(GetCSharpVariableType(col)=="string"&&col.Size!=-1) {%> this.Property(t => t.<%=col.Name %>).HasColumnName("<%=col.Name %>").HasMaxLength(<%=col.Size %>); <%}else{ %> this.Property(t => t.<%=col.Name %>).HasColumnName("<%=col.Name %>"); <%} %> <%} %> <%} %> } } } <script runat="template"> public string Convert2Pascal(ColumnSchema col) { StringBuilder sb = new StringBuilder(); string[] strs = col.Name.Split(new char[] { '_'}); foreach (string str in strs) { sb.Append(str.Substring(0,1).ToUpper()); sb.Append(str.Substring(1)); } return sb.ToString(); } </script>
<%-- Name: Author: maomao Created:<%=Datetime.Now.ToShortDateString() %> Description: --%> <%@ Template Language="C#" TargetLanguage="C#" Inherits="SqlCodeTemplate" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Assembly Name="CodeSmith.BaseTemplates" %> <%@ Import Namespace="CodeSmith.BaseTemplates" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="System.Collections" %> <%@ Import Namespace="System.Text" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="NameSpace" Type="String" Description="命名空间" %> using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace <%=NameSpace %> { public static partial class <%=ConvertTablename2Pascal(SourceTable) %>DAL { public static List<<%=ConvertTablename2Pascal(SourceTable) %>> Search(string sqlStr,List<SqlParameter> pms) { List<<%=ConvertTablename2Pascal(SourceTable) %>> list = new List<<%=ConvertTablename2Pascal(SourceTable) %>>(); DataTable table = SqlHelper.ExecuteDataTable(sqlStr,pms.ToArray()); foreach (DataRow dr in table.Rows) { <%=ConvertTablename2Pascal(SourceTable) %> model = new <%=ConvertTablename2Pascal(SourceTable) %>(dr); list.Add(model); } return list; } public static bool Insert(<%=ConvertTablename2Pascal(SourceTable) %> model) { string sqlStr = ""; List<string> fileds = new List<string>(); List<string> pFileds = new List<string>(); List<SqlParameter> pms = new List<SqlParameter>(); #region 添加参数 <%foreach(ColumnSchema col in SourceTable.Columns){ %> <%if((bool)(col.ExtendedProperties["CS_IsIdentity"].Value)==true){continue;} %> <%if(col.SystemType==typeof(DateTime)) { %> if(model.<%=col.Name %>!=null&&model.<%=col.Name %>!=new DateTime()) { fileds.Add("[<%=col.Name %>]"); pFileds.Add("@<%=col.Name %>"); pms.Add(new SqlParameter("<%=col.Name %>",SqlDbType.<%=GetSqlDbType(col) %>,<%=col.Size %>){Value=model.<%=col.Name %>}); } <% }else {%> <%if(!col.SystemType.IsValueType){ %> if(model.<%=col.Name %>!=null) { fileds.Add("[<%=col.Name %>]"); pFileds.Add("@<%=col.Name %>"); pms.Add(new SqlParameter("<%=col.Name %>", SqlDbType.<%=GetSqlDbType(col) %>,<%=col.Size %>){Value=model.<%=col.Name %>}); } <%} else{%> { fileds.Add("[<%=col.Name %>]"); pFileds.Add("@<%=col.Name %>"); pms.Add(new SqlParameter("<%=col.Name %>", SqlDbType.<%=GetSqlDbType(col) %>,<%=col.Size %>){Value=model.<%=col.Name %>}); } <%} %> <%} %> <%} %> #endregion StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO <%=SourceTable.Name %> ("); sb.Append(string.Join(",", fileds)); sb.Append(") values ("); sb.Append(string.Join(",", pFileds)); sb.Append(")"); sqlStr = sb.ToString(); int i= SqlHelper.ExecuteNonQuery(sqlStr, pms.ToArray()); return i>0; } public static bool Update(<%=ConvertTablename2Pascal(SourceTable) %> model) { string sqlStr = ""; List<string> fileds = new List<string>(); List<string> pFileds = new List<string>(); List<SqlParameter> pms = new List<SqlParameter>(); #region 添加参数 <%foreach(ColumnSchema col in SourceTable.Columns){ %> <%if(col.IsPrimaryKeyMember){ %> pFileds.Add("[<%=col.Name %>]=@<%=col.Name %>"); pms.Add(new SqlParameter("<%=col.Name %>", SqlDbType.<%=GetSqlDbType(col) %>,<%=col.Size %>){Value=model.<%=col.Name %>}); <%} else{%> <%if(col.SystemType==typeof(DateTime)){ %> if(model.<%=col.Name %>!=null&&model.<%=col.Name %>!=new DateTime()) { fileds.Add("[<%=col.Name %>]=@<%=col.Name %>"); pms.Add(new SqlParameter("<%=col.Name %>", SqlDbType.<%=GetSqlDbType(col) %>,<%=col.Size %>){Value=model.<%=col.Name %>}); } <% }else {%> <%if(!col.SystemType.IsValueType){ %> if(model.<%=col.Name %>!=null) { fileds.Add("[<%=col.Name %>]=@<%=col.Name %>"); pms.Add(new SqlParameter("<%=col.Name %>", SqlDbType.<%=GetSqlDbType(col) %>,<%=col.Size %>){Value=model.<%=col.Name %>}); } <%} else{%> fileds.Add("[<%=col.Name %>]=@<%=col.Name %>"); pms.Add(new SqlParameter("<%=col.Name %>", SqlDbType.<%=GetSqlDbType(col) %>,<%=col.Size %>){Value=model.<%=col.Name %>}); <%} %> <%} %> <%} %> <%} %> #endregion StringBuilder sb = new StringBuilder(); sb.Append("update <%=SourceTable.Name %> set "); sb.Append(string.Join(",", fileds)); sb.Append(" where "); sb.Append(string.Join(" and ", pFileds)); sqlStr = sb.ToString(); int i= SqlHelper.ExecuteNonQuery(sqlStr, pms.ToArray()); return i>0; } } } <script runat="template"> public string Convert2Pascal(string name) { StringBuilder sb = new StringBuilder(); string[] strs = name.Split(new char[] { '_'}); foreach (string str in strs) { sb.Append(str.Substring(0,1).ToUpper()); sb.Append(str.Substring(1)); } return sb.ToString(); } public string ConvertTablename2Pascal(TableSchema table) { StringBuilder sb = new StringBuilder(); string[] strs = table.Name.Split(new char[] { '_'}); int index=0; foreach (string str in strs) { if(index==0) { index++; continue; } sb.Append(str.Substring(0,1).ToUpper()); sb.Append(str.Substring(1)); } return sb.ToString(); } </script>
<%@ Template Language="C#" TargetLanguage="C#" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="NameSpace" Type="String" Description="命名空间" %> using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; namespace <%=NameSpace %> { public partial class <%=SourceTable.Name %> { #region 属性 <%for(int i=0;i<SourceTable.Columns.Count;i++){ %> /// <summary> /// <%=SourceTable.Columns[i].Description %> /// </summary> public <%=SourceTable.Columns[i].SystemType %> <%=SourceTable.Columns[i].Name %> {get;set;} <%} %> #endregion public <%=SourceTable.Name %>() { } public <%=SourceTable.Name %>(DataRow dr) { <%for(int i=0;i<SourceTable.Columns.Count;i++){ %> if(dr["<%=SourceTable.Columns[i].Name %>"]!=DBNull.Value) { this.<%=SourceTable.Columns[i].Name %>= (<%=SourceTable.Columns[i].SystemType %>)dr["<%=SourceTable.Columns[i].Name %>"]; } <%} %> } } }
SqlHelper:
<%@ Template Language="C#" TargetLanguage="C#" %> <%@ Property Name="NameSpace" Type="String" Category="命名空间" %> using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using System.Data.SqlClient; using System.Data; namespace <%=NameSpace %> { static class SqlHelper { public static readonly string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connstr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); return cmd.ExecuteNonQuery(); } } } public static object ExecuteScalar(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connstr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); return cmd.ExecuteScalar(); } } } public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connstr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); DataSet dataset = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dataset); return dataset.Tables[0]; } } } public static object FromDbValue(object value) { if (value == DBNull.Value) { return null; } else { return value; } } public static object ToDbValue(object value) { if (value == null) { return DBNull.Value; } else { return value; } } } }
DAL:
<%@ Template Language="C#" TargetLanguage="C#" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="数据库" %> <%@ Property Name="NameSpace" Type="String" Description="命名空间" %> using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace <%=NameSpace %> { public static partial class <%=SourceTable.Name %>DAL { public static List<<%=SourceTable.Name %>> Search(string sqlStr,List<SqlParameter> pms) { List<<%=SourceTable.Name %>> list = new List<<%=SourceTable.Name %>>(); DataTable table = SqlHelper.ExecuteDataTable(sqlStr,pms.ToArray()); foreach (DataRow dr in table.Rows) { <%=SourceTable.Name %> model = new <%=SourceTable.Name %>(dr); list.Add(model); } return list; } public static bool Insert(<%=SourceTable.Name %> model) { string sqlStr = ""; List<string> fileds = new List<string>(); List<string> pFileds = new List<string>(); List<SqlParameter> pms = new List<SqlParameter>(); #region 添加字段 <%for(int i=0;i<SourceTable.Columns.Count;i++){ %> <%if((bool)(SourceTable.Columns[i].ExtendedProperties["CS_IsIdentity"].Value)==true){continue;} %> <%if(SourceTable.Columns[i].SystemType==typeof(DateTime)) { %> if(model.<%=SourceTable.Columns[i].Name %>!=null&&model.<%=SourceTable.Columns[i].Name %>!=new DateTime()) { fileds.Add("[<%=SourceTable.Columns[i].Name %>]"); pFileds.Add("@<%=SourceTable.Columns[i].Name %>"); pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>)); } <% }else {%> if(model.<%=SourceTable.Columns[i].Name %>!=null) { fileds.Add("[<%=SourceTable.Columns[i].Name %>]"); pFileds.Add("@<%=SourceTable.Columns[i].Name %>"); pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>)); } <%} %> <%} %> #endregion StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO <%=SourceTable.Name %> ("); sb.Append(string.Join(",", fileds)); sb.Append(") values ("); sb.Append(string.Join(",", pFileds)); sb.Append(")"); sqlStr = sb.ToString(); int i= SqlHelper.ExecuteNonQuery(sqlStr, pms.ToArray()); return i>0; } public static bool Update(<%=SourceTable.Name %> model) { string sqlStr = ""; List<string> fileds = new List<string>(); List<string> pFileds = new List<string>(); List<SqlParameter> pms = new List<SqlParameter>(); #region 添加字段 <%for(int i=0;i<SourceTable.Columns.Count;i++){ %> <%if(SourceTable.Columns[i].IsPrimaryKeyMember){ %> pFileds.Add("[<%=SourceTable.Columns[i].Name %>]=@<%=SourceTable.Columns[i].Name %>"); pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>)); <%} else{ %> <%if(SourceTable.Columns[i].SystemType==typeof(DateTime)) { %> if(model.<%=SourceTable.Columns[i].Name %>!=null&&model.<%=SourceTable.Columns[i].Name %>!=new DateTime()) { fileds.Add("[<%=SourceTable.Columns[i].Name %>]=@<%=SourceTable.Columns[i].Name %>"); pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>)); } <% }else {%> if(model.<%=SourceTable.Columns[i].Name %>!=null) { fileds.Add("[<%=SourceTable.Columns[i].Name %>]=@<%=SourceTable.Columns[i].Name %>"); pms.Add(new SqlParameter("<%=SourceTable.Columns[i].Name %>", model.<%=SourceTable.Columns[i].Name %>)); } <%} %> <%} %> <%} %> #endregion StringBuilder sb = new StringBuilder(); sb.Append("update <%=SourceTable.Name %> set "); sb.Append(string.Join(",", fileds)); sb.Append(" where "); sb.Append(string.Join(" and ", pFileds)); sqlStr = sb.ToString(); int i= SqlHelper.ExecuteNonQuery(sqlStr, pms.ToArray()); return i>0; } } }
Tables:遍历库中所有表
<%@ CodeTemplate Language="C#" TargetLanguage="Text" Description="List all database tables" %> <%@ Property Name="SourceDatabase" Type="SchemaExplorer.DatabaseSchema" Category="Context" Description="Database containing the tables." %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> Tables in database "<%= SourceDatabase %>": <% for (int i = 0; i < SourceDatabase.Tables.Count; i++) { %> <%= SourceDatabase.Tables[i].Name %> <% } %>