MySQL query example explanation through instantiated object parameters

MySQL query example explanation through instantiated object parameters

This article will introduce how to query data in MySQL by instantiating object parameters. (Source code) has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

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("Query database failed, {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;
  }
}

By instantiating parameters, assigning values ​​to properties, passing objects as parameters, and obtaining object names, column names, and column values ​​through reflection. The object name is required to be consistent with the table name, and the attribute is required to be consistent with the column name. Thank you for your support of 123WORDPRESS.COM.

You may also be interested in:
  • A brief discussion on the problem of passing parameters when using in in pymysql query statements
  • How to use the Limit parameter to optimize MySQL queries
  • Summary of MySQL 8.0 memory-related parameters
  • Python MySQL in parameterization description
  • Python MySQLdb parameter passing method when executing sql statements
  • Python MySQL datetime formatting as parameter operations
  • Detailed explanation of MYSQL configuration parameter optimization
  • MySQL performance comprehensive optimization method reference, from CPU, file system selection to mysql.cnf parameter optimization
  • Detailed explanation of table_open_cache parameter optimization and reasonable configuration under MySQL 5.6
  • MySQL parameter related concepts and query change methods

<<:  WeChat applet development practical skills: data transmission and storage

>>:  How to install Graphviz and get started tutorial under Windows

Recommend

Introduction to Linux common hard disk management commands

Table of contents 1. df command 2. du command 3. ...

How to install openjdk in docker and run the jar package

Download image docker pull openjdk Creating a Dat...

Common symbols in Unicode

Unicode is a character encoding scheme developed ...

Detailed explanation of Linux host name modification command

Linux change hostname command 1. If you only need...

MySql grouping and randomly getting one piece of data from each group

Idea: Just sort randomly first and then group. 1....

Use three.js to achieve cool acid style 3D page effects

This article mainly introduces how to use the Rea...

Solution to inserting a form with a blank line above and below

I don't know if you have noticed when making a...

How does the composite index of MySQL take effect?

Table of contents background Understanding compos...

6 Practical Tips for TypeScript Development

Table of contents 1. Determine the entity type be...

Detailed explanation of CSS image splicing technology (sprite image)

CSS image splicing technology 1. Image stitching ...

Use Docker to build a Redis master-slave replication cluster

In a cluster with master-slave replication mode, ...