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,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象, ...
随机推荐
- kettle中的karaf设置
Spoon.sh设置-Dpentaho.karaf.root.copy.dest.folder=$PENTAHO_KARAF_ROOT -Dpentaho.karaf.root.transient=f ...
- cpu与寄存器,内核态与用户态及如何切换
cpu:相当于计算机的大脑负责运算和发送命令: 寄存器:寄存器是cpu当中的一个有限存储部件,cpu从内存调用数据时,寄存器会将从内存调用的数据进行更新在寄存器中以一个字或变量进行存储. 寄存器总共分 ...
- postgresql 建模文件 LDM 转成PDM 生成 SQL问题
LDM 转成 PDM (Tool --- GPDM ) 生成 SQL,查看全部SQL 详细步骤见下图. 1.postgresql 没有 VARCHAR2 只有 VARCHAR. 2.LDM 生成 PD ...
- CDH5离线安装简记
需要的介质如下:CM: cloudera-manager-el6-cm5.4.3_x86_64.tar.gzCDH parcel: CDH-5.4.0-1.cdh5.4.0.p0.27-el6.par ...
- Submine Text 快捷键
Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...
- ARKit 研究笔记一
软件需求:Xcode9.x .blender 硬件需求:iphone 6s + 系统:iOS 11 + 技能储备: ARKit .SceneKit(苹果提供的3d游戏库) 或 SpriteKit(苹果 ...
- Ubuntu16.04中查看硬盘的型号和读取速度
最近在测试FTP服务器,上传和下载的速度与很多因数有关,其中,硬盘的读取速度就是其中不同的区别点,我同时用了三台不用的服务器架设FTP服务,一台是出来ftp服务外还含平台其他管理软件,一台是全新的系统 ...
- JS正则表达式从入门到入土(1)—— REGEXP对象
REGEXP对象 JavaScript通过内置对象RegExp支持正则表达式,有两种方法实例化RegExp对象. 1.字面量 2.构造函数 字面量 字面量是直接通过/.../创建RegExp对象实例. ...
- wamp 安装memcached
PECL 的全称是 The PHP Extension Community Library ,是一个开放的并通过 PEAR(PHP Extension and Application Reposito ...
- Spring编码过滤器:解决中文乱码
Spring编码过滤器:解决中文乱码 针对问题: 前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题: 解决方案: web.x ...