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

Detailed explanation of Vue plugin

Summarize This article ends here. I hope it can b...

How to run the react project on WeChat official account

Table of contents 1. Use the a tag to preview or ...

MySQL 1130 exception, unable to log in remotely solution

Table of contents question: 1. Enable remote logi...

Docker deploys mysql remote connection to solve 2003 problems

Connecting to MySQL Here I use navicat to connect...

Summary of Commonly Used MySQL Commands in Linux Operating System

Here are some common MySQL commands for you: -- S...

Detailed explanation of nginx proxy_cache cache configuration

Preface: Due to my work, I am involved in the fie...

How to hide elements on the Web and their advantages and disadvantages

Example source code: https://codepen.io/shadeed/p...

Implementation of code optimization for Vue2.x project performance optimization

Table of contents 1 Use of v-if and v-show 2. Dif...

VUE introduces the implementation of using G2 charts

Table of contents About G2 Chart use Complete cod...

Implementing search box function with search icon based on html css

Preface Let me share with you how to make a searc...

WeChat applet uses the video player video component

This article example shares the specific code of ...

Detailed explanation of the role of key in React

Table of contents Question: When the button is cl...

Answers to several high-frequency MySQL interview questions

Preface: In interviews for various technical posi...

Detailed explanation of how to enable slow query log in MySQL database

The database enables slow query logs Modify the c...