千家信息网

MySQL通过实例化对象参数如何查询数据

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,下文主要给大家带来MySQL通过实例化对象参数如何查询数据 ,希望这些内容能够带给大家实际用处,这也是我编辑MySQL通过实例化对象参数如何查询数据 这篇文章的主要目的。好了,废话不多说,大家直接看下
千家信息网最后更新 2024年11月11日MySQL通过实例化对象参数如何查询数据

下文主要给大家带来MySQL通过实例化对象参数如何查询数据 ,希望这些内容能够带给大家实际用处,这也是我编辑MySQL通过实例化对象参数如何查询数据 这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

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 in properties)        {            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)            return resultstr;        MySqlCommand _sqlCom = new MySqlCommand(select, connection);        reader = _sqlCom.ExecuteReader();        List tList = new List();        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(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;    }}

通过实例化参数,对属性赋值,将对象作为参数传入,反射获取对象名称,列名,列值。要求对象名与表名一致,属性与列名一致。

对于以上关于MySQL通过实例化对象参数如何查询数据 ,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

0