table 转实体
public class Table2Entity<T> where T : class,new()
{
public static List<T> GetEntitys(DataTable dt)
{
Dictionary<string, string> columns = new Dictionary<string, string>();
foreach (DataColumn item in dt.Columns)
{
columns.Add(item.ColumnName.Trim().ToLower(), item.ColumnName);
}
List<T> result = new List<T>();
var proptetis = typeof(T).GetProperties(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
foreach (DataRow dr in dt.Rows)
{
T obj = new T();
foreach (var item in proptetis)
{
var attributes = item.GetCustomAttributes(typeof(RenameAttribute), true);
var columnName = (attributes != null && attributes.Length > ) ? ((RenameAttribute)(attributes[])).Name.Trim().ToLower() : item.Name.Trim().ToLower();
if (columns.Keys.Contains(columnName))
{
var mt = item.GetSetMethod(true);
var value = dr[columns[columnName]];
if (value == null || value == DBNull.Value || string.IsNullOrWhiteSpace(value.ToString())) continue;
if (item.PropertyType == typeof(string))
mt.Invoke(obj, new object[] { value.ToString() });
else if (item.PropertyType == typeof(int) || item.PropertyType == typeof(int?))
mt.Invoke(obj, new object[] { Convert.ToInt32(value) });
else if (item.PropertyType == typeof(long) || item.PropertyType == typeof(long?))
mt.Invoke(obj, new object[] { Convert.ToInt64(value) });
else if (item.PropertyType == typeof(double) || item.PropertyType == typeof(double?))
mt.Invoke(obj, new object[] { Convert.ToDouble(value) });
else if (item.PropertyType == typeof(decimal) || item.PropertyType == typeof(decimal?))
mt.Invoke(obj, new object[] { Convert.ToDecimal(value) });
else if (item.PropertyType == typeof(DateTime) || item.PropertyType == typeof(DateTime?))
mt.Invoke(obj, new object[] { Convert.ToDateTime(value) });
else if (item.PropertyType == typeof(float) || item.PropertyType == typeof(float?))
mt.Invoke(obj, new object[] { float.Parse(value.ToString()) });
else if (item.PropertyType == typeof(bool))
mt.Invoke(obj, new object[] { bool.Parse(value.ToString()) });
else if (item.PropertyType.BaseType == typeof(System.Enum))
{
mt.Invoke(obj, new object[] { Convert.ToInt32(value) });
}
}
}
result.Add(obj);
}
return result;
}
}
table 转实体的更多相关文章
- C# 泛型实现Table与实体的相互转换
public class ModelHandler<T> where T : new() { /// <summary> /// Table转换成实体 /// </sum ...
- @Entity 和 @Table
Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库.这些普通Java对象被称作Entity Bean.除了是用Java Persis ...
- JPA之@Entity、@Table、@Column、@Id
Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库.这些普通Java对象被称作Entity Bean.除了是用Java Persis ...
- JPA实体类中的注解
@Entity 标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类@Table 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相 ...
- MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
1.我们通过DB与数据库建立连接 2.建立web工程,构建Hibernate框架 3.通过table生成实体类
- ToolsCodeTemplate使用
最近学习使用CodeSmith代码生成器 CodeSmith 是一种语法类似于asp.net的基于模板的代码生成器,程序可以自定义模板,从而减少重复编码的劳动量,提高效率. 作用:CodeSmith ...
- 7.DataAnnotations(数据注解)【Code-First 系列】
EF Code-First提供了一系列的数据注解的特性,你可以将其应用到你的领域类和属性中,数据注解属性重写了EF默认的约定. System.ComponentModel.DataAnnotation ...
- spring4+hibernate4+maven环境搭建
本文主要介绍利用maven搭建spring4+hibernate4开发环境. 首先我们创建一个maven项目,具体步骤就不详细介绍了,看看我们pom.xml文件 <project xmlns=& ...
- 详谈Hibernate框架关系映射!
接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象, ...
随机推荐
- 20165324 Java实验三 敏捷开发与XP实验
20165324 Java实验三 敏捷开发与XP实验 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:何春江 学号:20165324 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- Mac打开应用提示已损坏的解决办法
相信很多升级了最新Mac系统的用户在打开一些应用的时候都会出现“应用XX已损坏”的系统提示,安装这些应用的时候总是提示“已损坏,移至废纸篓”这类信息,根本无法打开应用. Mac打开应用提示已损坏的解决 ...
- 正确使用goto语句
是否应该使用goto语句 goto语句也被称为无条件转移语句,它通常与条件语句配合使用来改变程序流向,使得程序转去执行语句标号所标识的语句. 关于是否应该使用goto语句,历史上也争论不休.恐怕国内大 ...
- flask—信号(blinker)
Flask框架中的信号基于blinker,主要是让开发者在flask请求过程中定制一些用户行为. 安装blinker pip3 install blinker 1.内置信号 request_start ...
- Bootstrap 中的插件的学习2(导航)
实例 在导航栏内 下面的实例演示了在导航栏内的下拉菜单的用法: <!DOCTYPE HTML> <html> <head> <link href=" ...
- hdu5558 Alice's Classified Message
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=5558 题目: Alice's Classified Message Time Limit: 1 ...
- Extjs 正则表达式 常用的
extjs正则表达式验证 2011年10月10日 10:36:05 阅读数:7305 在EXT中使用正则表达式验证的方法:fieldLabel : '员工号',name : 'employee.e ...
- JqGrid 隐藏水平滚动条完美解决方案
我有强迫症,网上找的几个看着就不舒服 不用更改样式表,隐藏最右侧的边框. .ui-jqgrid .ui-jqgrid-bdiv{ overflow-x: hidden; } 不用通过js控制加1px ...
- ThinkPHP语法总结
1, $data存放实体: $data['title'] = I('post.title'); // 标题 $data['content'] = I('post.content'); // 正文 $d ...
- Autowire
Field userService in com.demo.web.Controller.HomeController required a single bean, but 2 were found ...