使用场景

后台接收客户端传过来的值,经过相应的处理和操作,对数据库进行CURD操作。我们通常直接获取json对象,或创建一个dto对象映射json对象,并将值插入到固定的地方。如果客户端传递的参数特别多,前面的一对一的操作显然不太合适,这将编写大量看起来臃肿的代码。所以,更有效的方式是遍历json对象,数据表对象根据参数名称识别对应插入值的字段。

获取对象的所有属性

Field[] field = model.getClass().getDeclaredFields();

获取属性值

Method m = model.getClass().getMethod("get"+name); //获取getter方法
String value = (String) m.invoke(model);

设置属性值

Method m = model.getClass().getMethod("set"+name, new Class[] {String.class});
m.invoke(model,new Object[] {new String("new value")});

常用方法封装

/** * 根据属性名获取属性值 * */  private Object getFieldValueByName(String fieldName, Object o) {  try {    String firstLetter = fieldName.substring(0, 1).toUpperCase();    String getter = "get" + firstLetter + fieldName.substring(1);    Method method = o.getClass().getMethod(getter, new Class[] {});    Object value = method.invoke(o, new Object[] {});    return value;    } catch (Exception e) {    log.error(e.getMessage(),e);    return null;    }    }   /** * 获取属性名数组 * */  private String[] getFiledName(Object o){  Field[] fields=o.getClass().getDeclaredFields();  String[] fieldNames=new String[fields.length];  for(int i=0;i<fields.length;i++){  System.out.println(fields[i].getType());  fieldNames[i]=fields[i].getName();  }  return fieldNames;  }  /** * 获取属性类型(type),属性名(name),属性值(value)的map组成的list * */  private List getFiledsInfo(Object o){  Field[] fields=o.getClass().getDeclaredFields();  String[] fieldNames=new String[fields.length];  List list = new ArrayList();  Map infoMap=null;  for(int i=0;i<fields.length;i++){  infoMap = new HashMap();  infoMap.put("type", fields[i].getType().toString());  infoMap.put("name", fields[i].getName());  infoMap.put("value", getFieldValueByName(fields[i].getName(), o));  list.add(infoMap);  }  return list;  }  /** * 获取对象的所有属性值,返回一个对象数组 * */  public Object[] getFiledValues(Object o){  String[] fieldNames=this.getFiledName(o);  Object[] value=new Object[fieldNames.length];  for(int i=0;i<fieldNames.length;i++){  value[i]=this.getFieldValueByName(fieldNames[i], o);  }  return value;  }

参考:https://blog.csdn.net/special_programmer/article/details/79995491

如何遍历java对象属性相关推荐

  1. 遍历java对象属性_[Java教程]遍历对象属性

    [Java教程]遍历对象属性 0 2016-09-12 13:00:03 初始化对象:var person = function(name){ this._name = name;}var grand ...

  2. java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试

    Stripes视图框架Java对象属性验证,它允许对字段设置是否必须填写,对数字大小进行限制等.我用prototype.js Ajax 将验证后的数据及时地展示出来,下面来看程序. 1.编写User实 ...

  3. jquery 遍历java对象的属性_用jquery each标签遍历java list对象

    最近在做tms管理系统(物流管理软件),遇到这样一个场景: 运单对应多个货物信息(我们这里只对应3个货物信息,但大部分情况下,只有1个货物信息),我需要编辑也就是修改该运单,那么带出该运单一对多的货物 ...

  4. java对象属性如果为null,如何实现赋值空字符串

    需求: 前人写的上传生成PDF,标题没有显示完全有null显示在上面 问题: 调用别人家接口不知道为null是哪个字段造成的 期望: 标题显示完整,不出现null 做法: 对实体类属性遍历,对所有为空 ...

  5. 遍历java对象中的属性

    public static void Reflect(Object obj) throws NoSuchMethodException, IllegalAccessException, Illegal ...

  6. java对象属性的作用域类型_java 对象和类

    类:类为对象定义属性和行为. 对象的定义:对象是代表现实世界可以明确标识的一个实体. 每个对象都有自己独特的标识.状态和行为. 一个对象的状态是由具体当前值的数据域来表示的. 一个对象的行为是由方法定 ...

  7. jquery 遍历java对象_jquery中object对象循环遍历的方法

    一个朋友问对象如何转为数组,当我问他为啥要转得时候,他告诉我,数组可以用js循环遍历,而对象则不可以.其实呢,对象同样可以循环遍历的啊.不用转换也可以循环!说明你对js或者jquery的某些操作不是很 ...

  8. jquery 遍历java对象,js/jquery遍历对象和数组的方法分析【forEach,map与each方法】...

    本文实例讲述了js/jquery遍历对象和数组的方法.分享给大家供大家参考,具体如下: JS forEach方法 arr[].forEach(function(value,index,array){ ...

  9. jquery 遍历java对象_jquery遍历数组、对象

    1,for循环: var arr = new Array(13.5,3,4,5,6); for(var i=0;i arr[i] = arr[i]/2.0; } 2,for,in循环: var x v ...

最新文章

  1. Java项目:健身管理系统(Java+ssm+springboot)
  2. 基于数字移相信号发生器的频率相位差测量系统的FPGA实现
  3. 腾讯一面有感(移动开发岗位)
  4. Python学习笔记九:文件I/O
  5. win10主题更换_WIN10好用的小软件
  6. IBM人工智能项目Watson旧金山开设新总部
  7. Java读取Rinex 2.11格式的观测值o文件
  8. BugKu web题目(bp)弱密码top1000
  9. 安卓盒子root--包好
  10. r语言调用python_R语言与Python协同工作
  11. c语言intmain作用,c语言intmain()是什么意思
  12. bat批处理,变量不生效
  13. 个别网站无法访问,能ping通
  14. ruby-下载图片,根据图片URL下载到本地
  15. 手机是如何泄密个人隐私的
  16. Revit教程合集110部
  17. 小学计算机教室外墙文化建设,4款小学教室外墙布置图片 小学教室走廊班牌班级文化墙设计图片...
  18. python使用 pywin32 模块操作 excel,Python 操作 excel 系列之五
  19. record, packed record和变体记录
  20. CATIA怎么约束快捷键_CATIA怎么设置快捷键?

热门文章

  1. python集合元素个数_python如何取set元素个数
  2. latex 跳转标签_在 LaTeX 中使用交叉引用
  3. i3 10100f和i5 10400f 哪个好
  4. java入门123 pdf下载_Java入门123:一个老鸟的Java学习心得 pdf_IT教程网
  5. 整理38款国外的一些免费虚拟主机,云计算,看看你使用过哪几个
  6. 数学小故事之拉格朗日的世界
  7. 光学字符识别(OCR,Optical Character Recognition)
  8. dos2unix 安装
  9. 【02】Hadoop入门
  10. python读取excel(读写处理xls或xlsx)