//利用反射技术,实现为实体类的属性赋值
package org.reflect.reflecttest;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.reflect.entity.Student;
import org.reflect.entity.User;
/**
* 利用反射技术,实现为实体类的属性赋值
* @author clplain;
*
*/
public class SetValue {
/**
* 赋值方法
* @param cla:表示将要给那个类的属性赋值,表示类
* @param maps:key表示属性名,value表示值
* @return
*/
public static Object setValue(Class cla,Map<String,Object> maps){
/**
* 1.创建一个类的对象
* 2.调用该对象的set方法赋值
* 2.1.获得方法名
* 2.1.1、根据属性名获得方法名
* 2.2.调用方法
* 3.返回已经赋值的对象
*/
Object obj = null;
try {
//根据类的反射,创建这个类的对象
obj = cla.newInstance();
//获得属性名,Map中保存了所有的属性的名字(key)
//获得所有的key\
Set keySet = maps.keySet();//获得存储所有key的Set集合
//迭代所有set集合
Object[] keyObjs = keySet.toArray();//将set集合转换为Object数组
for(Object keyName : keyObjs){//数组中的每个元素都是一个属性名
String fieldName = keyName.toString();
//根据属性名获得属性
Field field = cla.getDeclaredField(fieldName);
//根据属性名获得方法名
String methodName = "set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
//根据方法名获得方法
Method method = cla.getDeclaredMethod(methodName, field.getType());
//参数1,表示对象,参数2, 给方法赋的值
method.invoke(obj, maps.get(keyName));//调用方法,等同于obj.method(maps.get(keyName));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return obj;
}
public static void main(String[] args) {
/**
*测试方法为实体类User赋值;
*/
Map<String,Object> map = new HashMap<String,Object>();
map.put("uid", 1);
map.put("uname", "chenlong");
map.put("upass", "男");
User user = (User) setValue(User.class,map);
System.out.println(user.getUid()+","+user.getUname()+","+user.getUpass());
}
}
分享到:
相关推荐
数据实体类中如何给属性赋值.因为从数据库中取出来的是一个DataSet如果一个一个给数据实体类中的属性赋值显的非常的笨拙,而且我们的数据表多达100个.在网上搜索了下写出了个简单的方法,代码如下: 首先我们做个实体...
主要介绍了 java 利用反射机制,获取实体所有属性和方法,并对属性赋值的相关资料,需要的朋友可以参考下
下面小编就为大家带来一篇java反射遍历实体类属性和类型,并赋值和获取值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
实现list不同泛型之间实体的互转,基于java8新特性+反射机制实现list不同实体类互转,将jdk8的流处理集合互转抽出来成一个工具类,实现lsit
通过枚举反向给实体类赋值工具类,减少表单提交时通过request.getParameter(name)方式获取提交值的重复操作
主要介绍了C#实现利用反射简化给类字段赋值的方法,涉及C#操作反射的相关技巧,需要的朋友可以参考下
主要介绍了Java 通过反射给实体类赋值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
C#利用反射机制填充实体类 qq:292258449
反射,DataRow转换为实体类 反射,DataRow转换为实体类 反射,DataRow转换为实体类
1、$.ajax后需要接受的JSON源码;2、 JSON和JAVA的POJO的相互转换源码;3、实体类反射赋值操作util源码
接口中我使用了缓存,以及在返回数据时候用了响应实体包装了, 没有直接返回数据库映射实体类。 怀疑问题点: 响应实体包装实体类中的字段有误,全部写成了小写字母? 缓存在出入库的时候会自动转化大小写。 问题...
本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下: using System; using System.Collections.Generic; using System.Text; namespace PackDLL.Data.ConvertData { ///...
Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射) 1.ORM实现思路 2.@Table、@Column、标识实体类 2.1.创建注解 @Table、@Column 2.2.标识实体类 2.3.数据库表 3.结果集解析,注解加反射填充实体...
采用反射技术和XML,自动生成实体类和SQL语句..............
java实体类字段自定义-数据库字段和程序实体类属性不一致解决方案.docx
反射实现两个类的对象之间相同属性快速赋值,MapperToModel,数据源实体和目标实体将进行转换
最近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类。 框架是.net 4.5 public static D Mapper(S s) { D d = Activator...
C#实现根据实体类反射自动创建增,删,改,查相关功能,采用xml形式存储数据
通过反射获得实体类的字段和值
使用反射技术对java实体类进行操作,得到所有属性并赋值给属性