T4生成实体和简单的CRUD操作

主要跟大家交流下T4,我这里针对的是mysql,我本人比较喜欢用mysql,所以语法针对mysql,所以你要准备mysql的DLL了,同理sqlserver差不多,有兴趣可以自己写写,首先网上找了一个T4的帮助类,得到一些数据库属性,命名为 DbHelper.ttinclude

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core.dll" #>
<#@ assembly name="System.Data.dll" #>
<#@ assembly name="System.Data.DataSetExtensions.dll" #>
<#@ assembly name="System.Xml.dll" #>
<#@ assembly name="MySql.Data" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Data" #>
<#@ import namespace=" System.Data.SqlClient" #>
<#@ import namespace="MySql.Data.MySqlClient" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text.RegularExpressions" #><#+#region GetDbTablespublic class DbHelper{#region 去下划线,转大写public static string ToSplitFirstUpper(string file){string[] words = file.Split('_');StringBuilder firstUpperWorld = new StringBuilder();foreach (string word in words){string firstUpper = ToFirstUpper(word);firstUpperWorld.Append(firstUpper);}string firstUpperFile = firstUpperWorld.ToString().TrimEnd(new char[] { '_' });return firstUpperFile;}// 将字符串设置成首字母大写public static string ToFirstUpper(string field){string first = field.Substring(0, 1).ToUpperInvariant();string result = first;if (field.Length > 1){string after = field.Substring(1);result = first + after;}return result;}#endregion#region 生成简单的sql语句public static string GetInsertSql(string connectionString, string database, string tableName){var list = GetDbColumns(connectionString, database, tableName);StringBuilder sb1 = new StringBuilder();StringBuilder sb2 = new StringBuilder();foreach (var item in list){string field = item.Field;if (field.ToLower() == "id") continue;sb1.Append(field).Append(", ");sb2.Append("?").Append(field).Append(", ");}string s1 = sb1.ToString().Trim(new char[] { ',', ' ' });string s2 = sb2.ToString().Trim(new char[] { ',', ' ' });return string.Format("INSERT INTO {0}({1}) VALUES({2})", tableName, s1, s2);}public static string GetParameter(string connectionString, string database, string tableName, bool hasId){var list = GetDbColumns(connectionString, database, tableName);StringBuilder sb = new StringBuilder();sb.Append("MySqlParameter[] paras = new MySqlParameter[] { \r\n");foreach (var item in list){if (item.Field.ToLower() == "id" && !hasId) continue;sb.AppendFormat("                 new MySqlParameter(\"{0}\", this.{1}),\r\n", item.Field, ToSplitFirstUpper(item.Field));}string s = sb.ToString().Trim(new char[] { ',', ' ', '\r', '\n' });s = s + "\r\n            };\r\n";return s;}public static string GetUpdateSql(string connectionString, string database, string tableName){var list = GetDbColumns(connectionString, database, tableName);StringBuilder sb1 = new StringBuilder();foreach (var item in list){string field = item.Field;if (field.ToLower() == "id") continue;sb1.Append(field).Append(" = ").Append("?").Append(field).Append(", ");}string s1 = sb1.ToString().Trim(new char[] { ',', ' ' });return string.Format("UPDATE {0} SET {1} WHERE id = ?id", tableName, s1);}#endregion#region GetDbTablespublic static List<DbTable> GetDbTables(string connectionString, string database){#region SQLstring sql = string.Format("SHOW TABLE STATUS FROM {0};", database);#endregionDataTable dt = GetDataTable(connectionString, sql);return dt.Rows.Cast<DataRow>().Select(row => new DbTable{TableName = row.Field<string>("Name"),Rows = row.Field<UInt64>("Rows"),Comment = row.Field<string>("Comment")}).ToList();}#endregion#region GetDbColumnspublic static List<DbColumn> GetDbColumns(string connectionString, string database, string tableName){#region SQLstring sql = string.Format("SHOW FULL COLUMNS FROM {0} FROM {1};", tableName, database);#endregionDataTable dt = GetDataTable(connectionString, sql);return dt.Rows.Cast<DataRow>().Select(row => new DbColumn{IsPrimaryKey = !String.IsNullOrEmpty(row.Field<string>("Key")),Field = row.Field<string>("Field"),Type = row.Field<string>("Type"),Comment = row.Field<string>("Comment"),IsNullable = row.Field<string>("NULL") == "YES"}).ToList();}#endregion#region GetDataTablepublic static DataTable GetDataTable(string connectionString, string commandText, params SqlParameter[] parms){using (MySqlConnection connection = new MySqlConnection(connectionString)){MySqlCommand command = connection.CreateCommand();command.CommandText = commandText;command.Parameters.AddRange(parms);MySqlDataAdapter adapter = new MySqlDataAdapter(command);DataTable dt = new DataTable();adapter.Fill(dt);return dt;}}#endregion}#endregion#region DbTable/// <summary>/// 表结构/// </summary>public sealed class DbTable{/// <summary>/// 表名称/// </summary>public string TableName { get; set; }/// <summary>/// 行数/// </summary>public UInt64 Rows { get; set; }/// <summary>/// 描述信息/// </summary>public string Comment { get; set; }}#endregion#region DbColumn/// <summary>/// 表字段结构/// </summary>public sealed class DbColumn{/// <summary>/// 是否主键/// </summary>public bool IsPrimaryKey { get; set; }/// <summary>/// 字段名称/// </summary>public string Field { get; set; }/// <summary>/// 字段类型 int(11)/// </summary>public string Type { get; set; }/// <summary>/// 字段类型int/// </summary>public string ColumnType{get{return Type.IndexOf('(') == -1 ? Type : Type.Substring(0, Type.IndexOf('('));}}/// <summary>/// 数据库类型对应的C#类型/// </summary>public string CSharpType{get{return MysqlDbTypeMap.MapCsharpType(ColumnType);}}/// <summary>/// /// </summary>public Type CommonType{get{return MysqlDbTypeMap.MapCommonType(ColumnType);}}/// <summary>/// 描述/// </summary>public string Comment { get; set; }/// <summary>/// 是否允许空/// </summary>public bool IsNullable { get; set; }/// <summary>/// 字符长度/// </summary>public int CharLength{get{Regex regex = new Regex(@"(?<=\()\d*?(?=\))", RegexOptions.Singleline);if (regex.IsMatch(Type)){Match match = regex.Match(Type);while (match != null && match.Success){int charLength;if (Int32.TryParse(match.Value, out charLength)){return charLength;}}}return 0;}}}#endregion#region SqlServerDbTypeMappublic class MysqlDbTypeMap{public static string MapCsharpType(string dbtype){if (string.IsNullOrEmpty(dbtype)) return dbtype;dbtype = dbtype.ToLower();string csharpType = "object";switch (dbtype){case "bigint": csharpType = "long"; break;case "binary": csharpType = "byte[]"; break;case "bit": csharpType = "bool"; break;case "char": csharpType = "string"; break;case "date": csharpType = "DateTime"; break;case "datetime": csharpType = "DateTime"; break;case "datetime2": csharpType = "DateTime"; break;case "datetimeoffset": csharpType = "DateTimeOffset"; break;case "dityint": csharpType = "bool"; break;case "decimal": csharpType = "decimal"; break;case "float": csharpType = "double"; break;case "image": csharpType = "byte[]"; break;case "int": csharpType = "int"; break;case "money": csharpType = "decimal"; break;case "nchar": csharpType = "string"; break;case "ntext": csharpType = "string"; break;case "numeric": csharpType = "decimal"; break;case "nvarchar": csharpType = "string"; break;case "real": csharpType = "Single"; break;case "smalldatetime": csharpType = "DateTime"; break;case "smallint": csharpType = "short"; break;case "smallmoney": csharpType = "decimal"; break;case "sql_variant": csharpType = "object"; break;case "sysname": csharpType = "object"; break;case "text": csharpType = "string"; break;case "longtext": csharpType = "string"; break;case "time": csharpType = "TimeSpan"; break;case "timestamp": csharpType = "byte[]"; break;case "tinyint": csharpType = "byte"; break;case "uniqueidentifier": csharpType = "Guid"; break;case "varbinary": csharpType = "byte[]"; break;case "varchar": csharpType = "string"; break;case "xml": csharpType = "string"; break;default: csharpType = "object"; break;}return csharpType;}public static Type MapCommonType(string dbtype){if (string.IsNullOrEmpty(dbtype)) return Type.Missing.GetType();dbtype = dbtype.ToLower();Type commonType = typeof(object);switch (dbtype){case "bigint": commonType = typeof(long); break;case "binary": commonType = typeof(byte[]); break;case "bit": commonType = typeof(bool); break;case "char": commonType = typeof(string); break;case "date": commonType = typeof(DateTime); break;case "datetime": commonType = typeof(DateTime); break;case "datetime2": commonType = typeof(DateTime); break;case "datetimeoffset": commonType = typeof(DateTimeOffset); break;case "dityint": commonType = typeof(Boolean); break;case "decimal": commonType = typeof(decimal); break;case "float": commonType = typeof(double); break;case "image": commonType = typeof(byte[]); break;case "int": commonType = typeof(int); break;case "money": commonType = typeof(decimal); break;case "nchar": commonType = typeof(string); break;case "ntext": commonType = typeof(string); break;case "numeric": commonType = typeof(decimal); break;case "nvarchar": commonType = typeof(string); break;case "real": commonType = typeof(Single); break;case "smalldatetime": commonType = typeof(DateTime); break;case "smallint": commonType = typeof(short); break;case "smallmoney": commonType = typeof(decimal); break;case "sql_variant": commonType = typeof(object); break;case "sysname": commonType = typeof(object); break;case "text": commonType = typeof(string); break;case "time": commonType = typeof(TimeSpan); break;case "timestamp": commonType = typeof(byte[]); break;case "tinyint": commonType = typeof(byte); break;case "uniqueidentifier": commonType = typeof(Guid); break;case "varbinary": commonType = typeof(byte[]); break;case "varchar": commonType = typeof(string); break;case "xml": commonType = typeof(string); break;default: commonType = typeof(object); break;}return commonType;}}#endregion#>
View Code

在加一个c#的sql帮助类, 命名为DBHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.Configuration;
using MySql.Data.MySqlClient;
using System.Reflection;
using System.Text;namespace ToolSite.Entity
{public class DBHelper{//添加到配置文件的<configuration>节点中//   <connectionStrings>//       <!--改写数据库名,登陆名,密码-->//        <add name="conStr" connectionString="Data Source=.;Initial Catalog=;User ID=;Password="/>//  //   </connectionStrings>//<appSettings>//      <add key="dbConnection" value="server=192.168.1.111\SQL2005;database=GCUMS;UID=sa;PWD=sa;max pool size=20000;Pooling=true;"/>//  </appSettings>//先添加configuration引用,引入命名空间//private static readonly string conStr = ConfigurationManager.AppSettings["connstr"]; //private static readonly string conStr = Config.ConnStr;/// <summary>/// 获得连接字符串/// </summary>/// <returns></returns>public static MySqlConnection getConn(){return new MySqlConnection(Config.ConnStr);}/// <summary>/// 查询获得首行首列的值,格式化SQL语句/// </summary>/// <param name="sql"></param>/// <returns></returns>public static object Scalar(String sql){using (MySqlConnection con = getConn()){try{MySqlCommand com = new MySqlCommand(sql, con);con.Open();return com.ExecuteScalar();}catch (Exception ex){throw ex;}}}/// <summary>/// 查询获得首行首列的值 参数化sql语句/// </summary>/// <param name="paras">参数数组</param>/// <param name="sql">sql语句</param>/// <returns></returns>public static object Scalar(string sql, MySqlParameter[] paras){using (MySqlConnection con = getConn()){try{MySqlCommand com = new MySqlCommand(sql, con);con.Open();if (paras != null) //如果参数
                    {com.Parameters.AddRange(paras);}return com.ExecuteScalar();}catch (Exception ex){throw ex;}}}/// <summary>/// 增删改操作,返回受影响的行数,格式化SQL语句/// </summary>/// <param name="sql"></param>/// <returns></returns>public static int NoneQuery(String sql){using (MySqlConnection conn = getConn()){conn.Open();using (MySqlCommand comm = new MySqlCommand(sql, conn)){return comm.ExecuteNonQuery();}}}/// <summary>/// 增删改操作,返回受影响的行数 存储过程/// </summary>/// <param name="sql">存储过程名称</param>/// <param name="paras">参数</param>/// <returns></returns>public static int NoneQuery(String sql, MySqlParameter[] paras){using (MySqlConnection conn = getConn()){conn.Open();using (MySqlCommand comm = new MySqlCommand(sql, conn)){comm.Parameters.AddRange(paras);return comm.ExecuteNonQuery();}}}/// <summary>/// 查询操作,返回一个数据表/// </summary>/// <param name="sql"></param>/// <returns></returns>public static DataTable GetDateTable(String sql){using (MySqlConnection con = getConn()){DataTable dt = new DataTable();try{MySqlDataAdapter sda = new MySqlDataAdapter(sql, con);sda.Fill(dt);}catch (Exception ex){throw ex;}return dt;}}/// <summary>///  查询操作,返回一个数据表,存储过程/// </summary>/// <param name="sp_Name">存储过程名称</param>/// <param name="paras">存储过程参数</param>/// <returns></returns>public static DataTable GetDateTable(String sql, MySqlParameter[] paras){using (MySqlConnection con = getConn()){DataTable dt = new DataTable();try{MySqlCommand com = new MySqlCommand(sql, con);com.Parameters.AddRange(paras);MySqlDataAdapter sda = new MySqlDataAdapter(com);sda.Fill(dt);}catch (Exception ex){throw ex;}return dt;}}}/// <summary>/// DataTable与实体类互相转换/// </summary>/// <typeparam name="T">实体类</typeparam>public class DatatableFill<T> where T : new(){#region DataTable转换成实体类/// <summary>/// 填充对象列表:用DataSet的第一个表填充实体类/// </summary>/// <param name="ds">DataSet</param>/// <returns></returns>public List<T> FillModel(DataSet ds){if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0){return new List<T>();}else{return FillModel(ds.Tables[0]);}}/// <summary>  /// 填充对象列表:用DataSet的第index个表填充实体类/// </summary>  public List<T> FillModel(DataSet ds, int index){if (ds == null || ds.Tables.Count <= index || ds.Tables[index].Rows.Count == 0){return new List<T>() ;}else{return FillModel(ds.Tables[index]);}}/// <summary>  /// 填充对象列表:用DataTable填充实体类/// </summary>  public List<T> FillModel(DataTable dt){if (dt == null || dt.Rows.Count == 0){return new List<T>();}List<T> modelList = new List<T>();foreach (DataRow dr in dt.Rows){//T model = (T)Activator.CreateInstance(typeof(T));  T model = new T();for (int i = 0; i < dr.Table.Columns.Count; i++){PropertyInfo propertyInfo = model.GetType().GetProperty(ToSplitFirstUpper(dr.Table.Columns[i].ColumnName));if (propertyInfo != null && dr[i] != DBNull.Value)propertyInfo.SetValue(model, dr[i], null);}modelList.Add(model);}return modelList;}/// <summary>  /// 填充对象:用DataRow填充实体类/// </summary>  public T FillModel(DataRow dr){if (dr == null){return default(T);}//T model = (T)Activator.CreateInstance(typeof(T));  T model = new T();for (int i = 0; i < dr.Table.Columns.Count; i++){PropertyInfo propertyInfo = model.GetType().GetProperty(ToSplitFirstUpper(dr.Table.Columns[i].ColumnName));if (propertyInfo != null && dr[i] != DBNull.Value)propertyInfo.SetValue(model, dr[i], null);}return model;}// 去下划线,转大写public static string ToSplitFirstUpper(string file){string[] words = file.Split('_');StringBuilder firstUpperWorld = new StringBuilder();foreach (string word in words){string firstUpper = ToFirstUpper(word);firstUpperWorld.Append(firstUpper);}string firstUpperFile = firstUpperWorld.ToString().TrimEnd(new char[] { '_' });return firstUpperFile;}// 将字符串设置成首字母大写public static string ToFirstUpper(string field){string first = field.Substring(0, 1).ToUpperInvariant();string result = first;if (field.Length > 1){string after = field.Substring(1);result = first + after;}return result;}#endregion#region 实体类转换成DataTable/// <summary>/// 实体类转换成DataSet/// </summary>/// <param name="modelList">实体类列表</param>/// <returns></returns>public DataSet FillDataSet(List<T> modelList){if (modelList == null || modelList.Count == 0){return null;}else{DataSet ds = new DataSet();ds.Tables.Add(FillDataTable(modelList));return ds;}}/// <summary>/// 实体类转换成DataTable/// </summary>/// <param name="modelList">实体类列表</param>/// <returns></returns>public DataTable FillDataTable(List<T> modelList){if (modelList == null || modelList.Count == 0){return null;}DataTable dt = CreateData(modelList[0]);foreach (T model in modelList){DataRow dataRow = dt.NewRow();foreach (PropertyInfo propertyInfo in typeof(T).GetProperties()){dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);}dt.Rows.Add(dataRow);}return dt;}/// <summary>/// 根据实体类得到表结构/// </summary>/// <param name="model">实体类</param>/// <returns></returns>private DataTable CreateData(T model){DataTable dataTable = new DataTable(typeof(T).Name);foreach (PropertyInfo propertyInfo in typeof(T).GetProperties()){dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));}return dataTable;}#endregion}
}
View Code

再家一个主要的T4文件,命名为 Entity.tt

<#@ include file="$(ProjectDir)Entity/DbHelper.ttinclude"#>
using System;
using MySql.Data.MySqlClient;
using System.Data;
using System.Collections.Generic;
namespace ToolSite.Entity
{public class Config{public static string DefaultDb = "<#=config.DbDatabase#>";public static string ConnStr = "<#=config.ConnectionString#>";}<#foreach(var table in DbHelper.GetDbTables(config.ConnectionString, config.DbDatabase)){#>
<# string tableName = DbHelper.ToSplitFirstUpper(table.TableName); #>public partial class <#=tableName#>{#region Field
<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, table.TableName)){#>/// <summary>/// <#= column.Comment#>/// </summary>public <#= column.CSharpType#> <#=DbHelper.ToSplitFirstUpper(column.Field)#> { get; set; }
<#}#>        #endregionpublic int Save(){<#=DbHelper.GetParameter(config.ConnectionString, config.DbDatabase, table.TableName, false)#>string sql = "<#=DbHelper.GetInsertSql(config.ConnectionString, config.DbDatabase, table.TableName)#>";return DBHelper.NoneQuery(sql, paras);}public int Update(){<#=DbHelper.GetParameter(config.ConnectionString, config.DbDatabase, table.TableName, true)#>string sql = "<#=DbHelper.GetUpdateSql(config.ConnectionString, config.DbDatabase, table.TableName)#>";return DBHelper.NoneQuery(sql, paras);}public static int Delete(int id){string sql = string.Format("DELETE FROM <#=table.TableName#> WHERE id = {0}", id);return DBHelper.NoneQuery(sql);}public static <#=tableName#> GetById(int id){string sql = string.Format("SELECT * FROM <#=table.TableName#> WHERE id = {0}", id);DataTable table = DBHelper.GetDateTable(sql);List<<#=tableName#>> list = new DatatableFill<<#=tableName#>>().FillModel(table);//List<<#=tableName#>> list = Mapper.DynamicMap<IDataReader, List<<#=tableName#>>>(table.CreateDataReader());if (list == null || list.Count == 0) return null;return list[0];}public static List<<#=tableName#>> GetList(){string sql = "SELECT * FROM <#=table.TableName#>";DataTable table = DBHelper.GetDateTable(sql);List<<#=tableName#>> list = new DatatableFill<<#=tableName#>>().FillModel(table);//List<<#=tableName#>> list = Mapper.DynamicMap<IDataReader, List<<#=tableName#>>>(table.CreateDataReader());return list;}public static List<<#=tableName#>> Find(string where){string sql = string.Format("SELECT * FROM <#=table.TableName#> WHERE {0};", where);DataTable table = DBHelper.GetDateTable(sql);return new DatatableFill<<#=tableName#>>().FillModel(table);}public static List<<#=tableName#>> Find(string field, string prop){return Find(string.Format(" {0} = '{1}' ", field, prop));}public static bool Exist(string field, string prop){int n = Count(field, prop);return n > 0 ? true : false;}public static int Count(string where){string sql = string.Format("SELECT COUNT(1) FROM <#=table.TableName#> WHERE {0}", where);DataTable table = DBHelper.GetDateTable(sql);return Convert.ToInt32(table.Rows[0][0]);}public static int Count(string field, string prop){return Count(string.Format(" {0} = '{1}' ", field, prop));}public static int Count(){return Count(" 1 = 1 ");}public static List<<#=tableName#>> Find(int index, int size, ref int count){count = Count(" 1 = 1 ");string sql = string.Format(" 1 = 1 Order by id desc  LIMIT {0}, {1} ", index * size , size);return Find(sql);}public static List<<#=tableName#>> Find(string field, string prop, int index, int size, ref int count){count = Count(field, prop);string sql = string.Format(" {0} = {1} Order by id desc LIMIT {2}, {3} ", field, prop, index, size);return Find(sql);}}<#}#>
}<#+class config{public static readonly string ConnectionString = "Server=127.0.0.1;Database=toolsite;Uid=root;Pwd=root;";public static readonly string DbDatabase = "toolsite";}
#>
View Code

你需要改的是最后那个文件的这个位置

    class config{public static readonly string ConnectionString = "Server=127.0.0.1;Database=toolsite;Uid=root;Pwd=root;";public static readonly string DbDatabase = "toolsite";}

怎么改我相信你懂的,点击下保存,你的实体类,跟数据库操作就生成了

最后生成的代码是这样子的,还是蛮粗糙的,如果你愿意改改,我相信会更好的!!!

using System;
using MySql.Data.MySqlClient;
using System.Data;
using System.Collections.Generic;
namespace ToolSite.Entity
{public class Config{public static string DefaultDb = "toolsite";public static string ConnStr = "Server=127.0.0.1;Database=toolsite;Uid=root;Pwd=root;";}public partial class PageInfo{#region Field/// <summary>/// /// </summary>public int Id { get; set; }/// <summary>/// /// </summary>public int SiteId { get; set; }/// <summary>/// /// </summary>public int ParentId { get; set; }/// <summary>/// /// </summary>public string FileName { get; set; }/// <summary>/// /// </summary>public string Content { get; set; }/// <summary>/// /// </summary>public string Title { get; set; }/// <summary>/// /// </summary>public string Keywords { get; set; }/// <summary>/// /// </summary>public string Description { get; set; }/// <summary>/// /// </summary>public string H1 { get; set; }#endregionpublic int Save(){MySqlParameter[] paras = new MySqlParameter[] { new MySqlParameter("site_id", this.SiteId),new MySqlParameter("parent_id", this.ParentId),new MySqlParameter("file_name", this.FileName),new MySqlParameter("content", this.Content),new MySqlParameter("title", this.Title),new MySqlParameter("keywords", this.Keywords),new MySqlParameter("description", this.Description),new MySqlParameter("h1", this.H1)};string sql = "INSERT INTO page_info(site_id, parent_id, file_name, content, title, keywords, description, h1) VALUES(?site_id, ?parent_id, ?file_name, ?content, ?title, ?keywords, ?description, ?h1)";return DBHelper.NoneQuery(sql, paras);}public int Update(){MySqlParameter[] paras = new MySqlParameter[] { new MySqlParameter("id", this.Id),new MySqlParameter("site_id", this.SiteId),new MySqlParameter("parent_id", this.ParentId),new MySqlParameter("file_name", this.FileName),new MySqlParameter("content", this.Content),new MySqlParameter("title", this.Title),new MySqlParameter("keywords", this.Keywords),new MySqlParameter("description", this.Description),new MySqlParameter("h1", this.H1)};string sql = "UPDATE page_info SET site_id = ?site_id, parent_id = ?parent_id, file_name = ?file_name, content = ?content, title = ?title, keywords = ?keywords, description = ?description, h1 = ?h1 WHERE id = ?id";return DBHelper.NoneQuery(sql, paras);}public static int Delete(int id){string sql = string.Format("DELETE FROM page_info WHERE id = {0}", id);return DBHelper.NoneQuery(sql);}public static PageInfo GetById(int id){string sql = string.Format("SELECT * FROM page_info WHERE id = {0}", id);DataTable table = DBHelper.GetDateTable(sql);List<PageInfo> list = new DatatableFill<PageInfo>().FillModel(table);//List<PageInfo> list = Mapper.DynamicMap<IDataReader, List<PageInfo>>(table.CreateDataReader());if (list == null || list.Count == 0) return null;return list[0];}public static List<PageInfo> GetList(){string sql = "SELECT * FROM page_info";DataTable table = DBHelper.GetDateTable(sql);List<PageInfo> list = new DatatableFill<PageInfo>().FillModel(table);//List<PageInfo> list = Mapper.DynamicMap<IDataReader, List<PageInfo>>(table.CreateDataReader());return list;}public static List<PageInfo> Find(string where){string sql = string.Format("SELECT * FROM page_info WHERE {0};", where);DataTable table = DBHelper.GetDateTable(sql);return new DatatableFill<PageInfo>().FillModel(table);}public static List<PageInfo> Find(string field, string prop){return Find(string.Format(" {0} = '{1}' ", field, prop));}public static bool Exist(string field, string prop){int n = Count(field, prop);return n > 0 ? true : false;}public static int Count(string where){string sql = string.Format("SELECT COUNT(1) FROM page_info WHERE {0}", where);DataTable table = DBHelper.GetDateTable(sql);return Convert.ToInt32(table.Rows[0][0]);}public static int Count(string field, string prop){return Count(string.Format(" {0} = '{1}' ", field, prop));}public static int Count(){return Count(" 1 = 1 ");}public static List<PageInfo> Find(int index, int size, ref int count){count = Count(" 1 = 1 ");string sql = string.Format(" 1 = 1 Order by id desc  LIMIT {0}, {1} ", index * size , size);return Find(sql);}public static List<PageInfo> Find(string field, string prop, int index, int size, ref int count){count = Count(field, prop);string sql = string.Format(" {0} = {1} Order by id desc LIMIT {2}, {3} ", field, prop, index, size);return Find(sql);}}public partial class SiteInfo{#region Field/// <summary>/// /// </summary>public int Id { get; set; }/// <summary>/// /// </summary>public string Name { get; set; }/// <summary>/// /// </summary>public string Template { get; set; }#endregionpublic int Save(){MySqlParameter[] paras = new MySqlParameter[] { new MySqlParameter("name", this.Name),new MySqlParameter("template", this.Template)};string sql = "INSERT INTO site_info(name, template) VALUES(?name, ?template)";return DBHelper.NoneQuery(sql, paras);}public int Update(){MySqlParameter[] paras = new MySqlParameter[] { new MySqlParameter("id", this.Id),new MySqlParameter("name", this.Name),new MySqlParameter("template", this.Template)};string sql = "UPDATE site_info SET name = ?name, template = ?template WHERE id = ?id";return DBHelper.NoneQuery(sql, paras);}public static int Delete(int id){string sql = string.Format("DELETE FROM site_info WHERE id = {0}", id);return DBHelper.NoneQuery(sql);}public static SiteInfo GetById(int id){string sql = string.Format("SELECT * FROM site_info WHERE id = {0}", id);DataTable table = DBHelper.GetDateTable(sql);List<SiteInfo> list = new DatatableFill<SiteInfo>().FillModel(table);//List<SiteInfo> list = Mapper.DynamicMap<IDataReader, List<SiteInfo>>(table.CreateDataReader());if (list == null || list.Count == 0) return null;return list[0];}public static List<SiteInfo> GetList(){string sql = "SELECT * FROM site_info";DataTable table = DBHelper.GetDateTable(sql);List<SiteInfo> list = new DatatableFill<SiteInfo>().FillModel(table);//List<SiteInfo> list = Mapper.DynamicMap<IDataReader, List<SiteInfo>>(table.CreateDataReader());return list;}public static List<SiteInfo> Find(string where){string sql = string.Format("SELECT * FROM site_info WHERE {0};", where);DataTable table = DBHelper.GetDateTable(sql);return new DatatableFill<SiteInfo>().FillModel(table);}public static List<SiteInfo> Find(string field, string prop){return Find(string.Format(" {0} = '{1}' ", field, prop));}public static bool Exist(string field, string prop){int n = Count(field, prop);return n > 0 ? true : false;}public static int Count(string where){string sql = string.Format("SELECT COUNT(1) FROM site_info WHERE {0}", where);DataTable table = DBHelper.GetDateTable(sql);return Convert.ToInt32(table.Rows[0][0]);}public static int Count(string field, string prop){return Count(string.Format(" {0} = '{1}' ", field, prop));}public static int Count(){return Count(" 1 = 1 ");}public static List<SiteInfo> Find(int index, int size, ref int count){count = Count(" 1 = 1 ");string sql = string.Format(" 1 = 1 Order by id desc  LIMIT {0}, {1} ", index * size , size);return Find(sql);}public static List<SiteInfo> Find(string field, string prop, int index, int size, ref int count){count = Count(field, prop);string sql = string.Format(" {0} = {1} Order by id desc LIMIT {2}, {3} ", field, prop, index, size);return Find(sql);}}}
View Code

 

转载于:https://www.cnblogs.com/zhanhengzong/p/3718533.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1688. 比赛中的配对次数(模拟)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;表示比赛中的队伍数。比赛遵循一种独特的赛制&#xff1a; 如果当前队伍数是 偶数 &#xff0c;那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛&#xff0c;且产生 n / 2 支队伍进入下一轮。如果当前队…

微信小程序使用函数的方法

一、使用来自不同页面的函数 函数写在util.js页面 function formatTime(date) {var year date.getFullYear()var month date.getMonth() 1var day date.getDate()var hour date.getHours()var minute date.getMinutes()var second date.getSeconds()return [year, mon…

LeetCode 1689. 十-二进制数的最少数目(脑筋急转弯)

文章目录1. 题目2. 解题1. 题目 如果一个十进制数字不含任何前导零&#xff0c;且每一位上的数字不是 0 就是 1 &#xff0c;那么该数字就是一个 十-二进制数 。 例如&#xff0c;101 和 1100 都是 十-二进制数&#xff0c;而 112 和 3001 不是。 给你一个表示十进制整数的字…

WeUI for 小程序使用教程文档总结

WeUI 是一套同微信原生视觉体验一致的基础样式库&#xff0c;由微信官方设计团队为微信 Web 开发量身设计&#xff0c;可以令用户的使用感知更加统一。包含按钮button、组件cell、弹框dialog、 进度条progress、 提示toast、文章article、弹出菜单actionsheet、图标icon等各式元…

如何安装Pycharm官方统计代码行插件

最近一直想统计Pycharm的总计代码行数&#xff0c;找到了官方的统计行数插件&#xff0c;发现效果还不错。 官方代码统计插件指导&#xff1a; https://plugins.jetbrains.com/plugin/4509-statistic&#xff08;英文版&#xff09; (初级教程&#xff0c;大牛请忽略) ***该…

LeetCode 1690. 石子游戏 VII(博弈DP)

文章目录1. 题目2. 解题1. 题目 石子游戏中&#xff0c;爱丽丝和鲍勃轮流进行自己的回合&#xff0c;爱丽丝先开始 。 有 n 块石子排成一排。每个玩家的回合中&#xff0c;可以从行中 移除 最左边的石头或最右边的石头&#xff0c;并获得与该行中剩余石头值之 和 相等的得分。…

LeetCode 1691. 堆叠长方体的最大高度(排序+最大上升子序DP)

文章目录1. 题目2. 解题2.1 暴力超时解2.2 排序最长上升子序463 / 3709&#xff0c;前 12.5%1240 / 9290&#xff0c;前13.3%1. 题目 给你 n 个长方体 cuboids &#xff0c;其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti]&#xff08;下标从 0 开始…

使用LSTM建立seq2seq模型进行语言翻译

文章目录1. 数据处理2. 编码器、解码器数据2.1 编码器2.2 解码器2.3 模型3. 训练4. 推理模型5. 采样参考 基于深度学习的自然语言处理 1. 数据处理 读取数据 with open(deu.txt, r, encodingutf-8) as f:lines f.read().split(\n) print("文档有 {} 行。".format(…

【struts2】预定义拦截器

&#xff11;&#xff09;预定义拦截器 Struts2有默认的拦截器配置&#xff0c;也就是说&#xff0c;虽然我们没有主动去配置任何关于拦截器的东西&#xff0c;但是Struts2会使用默认引用的拦截器。由于Struts2的默认拦截器声明和引用都在这个Struts-default.xml里面&#xff0…

使用注意力机制建模 - 标准化日期格式

文章目录1. 概述2. 数据3. 模型4. 训练5. 测试参考 基于深度学习的自然语言处理本文使用attention机制的模型&#xff0c;将各种格式的日期转化成标准格式的日期 1. 概述 LSTM、GRU 减少了梯度消失的问题&#xff0c;但是对于复杂依赖结构的长句子&#xff0c;梯度消失仍然存…

牛客 数学实验(模拟)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10166/A 来源&#xff1a;牛客网 牛牛在做数学实验。 老师给了牛牛一个数字n&#xff0c;牛牛需要不断地将所有数位上的值做乘法运算&#xff0c;直至最后数字不发生变化为止。 请你帮牛…

css动画之波纹

样式定义&#xff1a; #ContactAbout { height: auto; position: relative; overflow: hidden; } #sectioncontact { display: block; width: 100%; position: relative; height: 700px; z-index: 10; }#sectioncontact .map { width: 370px; height: 280px; position: absolut…

牛客 奇怪的排序问题(单调栈/遍历)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10166/B 来源&#xff1a;牛客网 操场上有n个人排成一队&#xff0c;这n个人身高互不相同&#xff0c;可将他们的身高视为一个1到n的排列。 这时需要把队伍变成升序&#xff0c;也就是从…

Python 中,matplotlib绘图无法显示中文的问题

在python中&#xff0c;默认情况下是无法显示中文的&#xff0c;如下代码&#xff1a; import matplotlib.pyplot as plt# 定义文本框和箭头格式 decisionNode dict(boxstyle "sawtooth", fc "0.8") leafNode dict(boxstyle "round4", fc …

牛客 XOR和(找规律)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10166/C 来源&#xff1a;牛客网 牛牛最近学会了异或操作&#xff0c;于是他发现了一个函数 f(x)x⊕(x−1)f(x)x\oplus (x-1)f(x)x⊕(x−1)&#xff0c;现在牛牛给你一个数 n&#xff0c…

天池 在线编程 数组划分III(计数)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/231188302809557697/235445278655844965 给你一个整数数组和一个整数K&#xff0c;请你判断数组是否可以划分为若干大小为k序列&#xff0c;并满足以下条件&#xff1a; 数组中的每一个数恰恰出现在一个序列中…

详解nohup和 区别

一、nohup nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令&#xff0c;忽略所有挂断&#xff08;SIGHUP&#xff09;信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令&#xff0c;添加 & &#xff08; 表示“and”的符号&#xf…

天池 在线编程 最小振幅(排序)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/231188302809557697/235445278655844966 给定一个由N个整数组成的数组A&#xff0c;一次移动&#xff0c;我们可以选择此数组中的任何元素并将其替换为任何值。 数组的振幅是数组A中的最大值和最小值之间的差。…

Python把两张图片拼接为一张图片并保存

这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来 from os import listdir from PIL import Imagedef pinjie():# 获取当前文件夹中所有JPG图像im_list [Image.open(fn) for fn in listdir() if fn.endswith(.jpg)]# 图片转化为相同的尺寸ims []for…

天池 在线编程 高效作业处理服务(01背包DP)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/231188302809557697/235445278655844967 Twitter正在测试一种名为Pigeon的新工作处理服务。 Pigeon可以用任务实际持续时间的两倍处理任务&#xff0c;并且每个任务都有一个权重。 此外&#xff0c;Pigeon在一…