- public static string QueryByEntity<T>(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 in properties)
- {
- var value = t.GetPropertyValue<T>(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)
- return resultstr;
- MySqlCommand _sqlCom = new MySqlCommand(select, connection);
- reader = _sqlCom.ExecuteReader();
- List<T> tList = new List<T>();
- while (reader.Read())
- {
- T t1 = new T();
- foreach (PropertyInfo property in properties)
- {
- 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();
- }
- }
- return resultstr;
- }
- internal static class ObjectExtend
- {
- public static object GetPropertyValue<T>(this object obj, 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(this PropertyInfo property)
- {
- return property.PropertyType.IsValueType ? Activator.CreateInstance(property.PropertyType) : null;
- }
- }