zoukankan      html  css  js  c++  java
  • C#数据查询出来的内容生成实体类

    以前写PHP查询出来都是数组也很容易去循环操作,突然用了.NET有点不习惯 不知道该如何去操作。

    现在记录下,利用泛型和反射将数据内容转化成对应的实体类。

    听说效率很低,这个先不管了。能用就行。

    public class Mapping {
    public static T Entity<T>(IDataReader reader,Dictionary<string,int> dictionary) {
    var type = typeof(T);
    //T u = new T();
    T u = Activator.CreateInstance<T>();

    PropertyInfo[] field = type.GetProperties();
    int index = -1;
    foreach (var f in field) {
    if (dictionary.TryGetValue(f.Name, out index)) {
    var r = reader.GetValue(index);
    if(r != DBNull.Value)
    f.SetValue(u, r, null);
    }
    }
    return u;
    }
    }




    传入的参数第一个不用解释了,第二个参数我将代码贴出来。

    Dictionary<string, int> dictionary = new Dictionary<string, int>();

    var dr = cmd.ExecuteReader();
    int count = dr.FieldCount;
    for (int i = 0; i < count; i++) {
    dictionary.Add(dr.GetName(i), i);
    }



    这么做只是为了方面下面反射的时候从字典中取得对应的属性名称和他所对应的键。

    下面这是完整的查询并转化成实体类的代码

    public List<T> findAll<T>() {
    var list = new List<T>();
    //var parame = new List<QueryParameter>();
    //parame.Add("uid");
    Dictionary<string, int> dictionary = new Dictionary<string, int>();
    using (SqlConnection conn = new SqlConnection(sqlConnectionString)) {
    String sql = "SELECT uid,username FROM Users ORDER BY uid DESC";

    SqlCommand cmd = new SqlCommand(sql, conn);
    //SqlParameter p = new SqlParameter("@uid", 1);
    //cmd.Parameters.Add(p);

    conn.Open();

    var dr = cmd.ExecuteReader();
    int count = dr.FieldCount;
    for (int i = 0; i < count; i++) {
    dictionary.Add(dr.GetName(i), i);
    }

    while (dr.Read()) {
    list.Add(Mapping.Entity<T>(dr,dictionary));
    }

    dr.Close();
    conn.Close();
    }
    return list;
    }



  • 相关阅读:
    模块化项目
    mysql mybatis-generator plugin 有page实体类的分页
    mysql mybatis-generator plugin 分页
    eclipse中mybatis generator插件的安装与使用,实现自动生成代码
    linux下安装mysql5.7.17及简单配置
    mybatis-mysql操作存储过程
    解决JSP路径问题的方法(jsp文件开头path, basePath作用)
    windows下开启mysql远程访问
    Java中hashCode的作用
    垃圾收集器与内存分配策略 (深入理解JVM二)
  • 原文地址:https://www.cnblogs.com/yimiao/p/2226846.html
Copyright © 2011-2022 走看看