public static string QueryByEntity(T t) where T : new()
{string resultstr = string.Empty;
MySqlDataReader reader= null;try{
Type type= typeof(T);
PropertyInfo[] properties=type.GetProperties();string select = string.Format("Select * from {0} {1}", type.Name, "{0}");string where = string.Empty;foreach (PropertyInfo property inproperties)
{var value = t.GetPropertyValue(property);if (value != null && !value.Equals(property.GetDefaultValue()))
{if (string.IsNullOrEmpty(where))
{where = string.Format("where {0}='{1}'", property.Name, value);
}else{where = string.Format("{0} and {1} = '{2}'", where, property.Name, value);
}
}
}select = string.Format(select, where);
MySqlConnection connection=OpenConnection();if (connection == null)returnresultstr;
MySqlCommand _sqlCom= new MySqlCommand(select, connection);
reader=_sqlCom.ExecuteReader();
List tList = new List();while(reader.Read())
{
T t1= newT();foreach (PropertyInfo property inproperties)
{if (!string.IsNullOrEmpty(reader[property.Name].ToString()))
{
property.SetMethod.Invoke(t1,new object[] { reader[property.Name] });
}
}
tList.Add(t1);
}
resultstr=JsonConvert.SerializeObject(tList);
}catch(Exception ex)
{
Logging.Error(string.Format("查询数据库失败,{0}", ex.Message));
}finally{if (reader != null)
{
reader.Close();
reader.Dispose();
}
}returnresultstr;
}internal static classObjectExtend
{public static object GetPropertyValue(this objectobj, PropertyInfo property)
{
Type type= typeof(T);
PropertyInfo propertyInfo=type.GetProperty(property.Name);if (propertyInfo != null)
{return propertyInfo.GetMethod.Invoke(obj, null);
}return null;
}public static object GetDefaultValue(thisPropertyInfo property)
{return property.PropertyType.IsValueType ? Activator.CreateInstance(property.PropertyType) : null;
}
}