java实现以类为对象把各属性值放入map
来源:互联网 发布:淘宝联盟能分享到qq群 编辑:程序博客网 时间:2024/06/05 11:08
最近的这个项目是使用的springMVC+mybatis,在service层往dao层传map的时候每次都要把Object的各个属性判断写一遍太麻烦了,就写了这么一个工具类。
它的作用是:将自定义的Object类中的个各属性当其值不为null时,以其属性名为key,对应的值为value存入一个map中返回
一、如何获取类的各个属性名
Class<?>有一个getDeclaredFields()方法,能获取Field数组
Field[] fields = obj.getClass().getDeclaredFields();for(Field field : fields){String fieldName = field.getName(); String type = field.getType().toString(); System.out.println("属性名:"+fieldName+"\t属性类型:"+type);}
其实Field还有蛮多方法的,有兴趣的可以去问问百度。
二、通过属性名称获取该对象该属性所对应的值
这里我使用的是java的invoke反射
//获取该属性的get方法名称String firstLetter=fieldName.substring(0,1).toUpperCase();String getter = "get"+firstLetter+fieldName.substring(1);try {Method method = object.getClass().getMethod(getter, new Class[]{});Object value = method.invoke(object, new Object[] {}); return value;} catch (Exception e) {return null;}其实可以看出来,这里的方法其实是有局限性的,我所获取的getter只适用于完全按照规范的get方法,并且该属性不能为Boolean。因为Boolean属性的get方法为isXxx()。
当然你可以更改get方法名称,但是我更推荐在代码逻辑上改,可以通过type判断属性类型,如果为Boolean就讲getter的拼接规则变一下。
三、将键值对放入map
这里因为我主要是做模糊查询,所以对String类型的值做了不同的操作,所以要判断属性类型。如果还有对其它类型(如:data)有要求的也应单独判断。因为很简单就直接附代码了。
public class ClassUtil {/** * 将一个类查询方式加入map(属性值为int型时,0时不加入, * 属性值为String型或Long时为null和“”不加入) * */public static Map<String, Object> setConditionMap(Object obj){Map<String, Object> map = new HashMap<String, Object>();if(obj==null){return null;}Field[] fields = obj.getClass().getDeclaredFields();for(Field field : fields){String fieldName = field.getName();if(getValueByFieldName(fieldName,obj)!=null)map.put(fieldName, getValueByFieldName(fieldName,obj));}return map;}/** * 根据属性名获取该类此属性的值 * @param fieldName * @param object * @return */private static Object getValueByFieldName(String fieldName,Object object){String firstLetter=fieldName.substring(0,1).toUpperCase();String getter = "get"+firstLetter+fieldName.substring(1);try {Method method = object.getClass().getMethod(getter, new Class[]{});Object value = method.invoke(object, new Object[] {}); return value;} catch (Exception e) {return null;} }}
0 0
- java实现以类为对象把各属性值放入map
- Java中把对象放入ArrayList集合中实现方法
- java反射得到类的属性名和属性值并且放入Map中
- Java基础-将Bean属性值放入Map中
- 把对象放入数组
- java实现对象转换为map、xml字符串转化为map、map转化为xml字符串
- 实际项目中以java面向对象的方式实现K-means算法,把对象聚类
- java的BeanUtils.copyProperties会把为数据源对象中数字包装对象为null的值改成0赋值给操作对象的属性
- java 时间处理放入map
- # Java中遍历Object的属性和属性值,并以String形式返回||toString()一个对象Object||将一个对象转化为字符串String
- Java 对象转化为Map
- java对象转化为Map
- Bean-Query 一个把对象转换为Map的Java工具库
- java中以类为参数将其哥属性值中的空格去除
- 关于java以对象为参数传值问题
- 把java对象转换为json串的类
- java对象转map key(对象属性)-value(属性值)
- 对Bean进行操作以用于把入参对象解析成Map参数传递到Mybatis的工具类
- configure: error: *** libmcrypt was not found 错误解决
- SSH启动错误
- 统计文件中每个单词的出现次数
- SPARK_RDD_API
- html5中使用canvas画时钟
- java实现以类为对象把各属性值放入map
- iOS-使用NSURLConnection进行Http Get和Post请求网络数据
- java中的类与对象
- 例题:百练2815 城堡问题
- hdu1159 Common Subsequence(最长公共子序列)
- Activity重建时保持Fragment状态的方法
- 美版S4 (SCH-R970) 刷机完全教程(非常详细)
- Java中通过TCP协议发送和接收数据-Socket编程
- C++ 将浮点数的前四位存为string