反射方式 Map转换obj对象

最近接到的需求是这样的,要求我根据一个关联id获取不同数据表的数据,并返回List集合。
我接到这个需求最初想法就是通过mabatis首先获取List<Map<String, Object>>返回值集合; 然后在根据表名称就可以得知实体类对象了,再通过反射的方式进行将map转换为obj。可能有人问我为什么这么转,因为已经获取到了map集合了。在这里我说一下,虽然我获取到了集合但是调用这个接口的开发人员就难受了,因为首先map中的key都是数据库表字段,那相应的开发人员就要通过反射的方式进行获取表字段了,为了方便他人我就在我这里全部都做了,调用方只需要根据实体类强转就可以了。

代码


public static List<Object> mapToObject(List<Map<String, Object>> map,Class<?> clz){List<Object> list = new ArrayList<>();map.stream().forEach(el-> {Object obj = null;try {obj = clz.newInstance();Field[] fields = obj.getClass().getDeclaredFields();for (Field field: fields){int mod = field.getModifiers();if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){continue;}field.setAccessible(true);Column presentColumn;String columnName;//判断是否被column注解修饰,获取name属性值if(field.isAnnotationPresent(Column.class)){presentColumn = field.getDeclaredAnnotation(Column.class);columnName = presentColumn.name();columnName = columnName.replace("`","");field.set(obj, el.get(columnName));}}list.add(obj);} catch (Exception e) {e.printStackTrace();}});return list;}

说明一下,这个是我再工具类种定义的转换方法。其实思路很简单,就是首先获取反射对象,获取字段,此处说明一下,getFields()是获取所有public修饰的字段,但是正常开发种,字段都是private pri修饰的,所以getDeclaredFields通过该方法获取字段。然后判断是否被static 或者final修饰,然后获取所有被@Column注解修饰的字段,获取column的name属性值,最后进行赋值操作,最后返回List对象。

{[{"id": "00aa6f24ce5c4972b17aa8e49b354435","prjViewId": "96f11d75cb61474483b847637a003b81","showOrder": 99,"datavalue": "0","rowIndex": "13","colIndex": "9","mergeRowCount": "0","mergeColCount": "0","type": "估算"},{"id": "0115d958826e40e88e913a898ac5c084","prjViewId": "96f11d75cb61474483b847637a003b81","showOrder": 95,"datavalue": "t","rowIndex": "13","colIndex": "5","mergeRowCount": "0","mergeColCount": "0","type": "估算"} ]

总结

一个小白的开发经验,本文仅仅是自己用作以后经验和技术提升的笔记,请勿喷,如果有更好的想法,希望可以分享一下,谢谢。

反射方式 Map转换obj对象相关推荐

  1. 自动将Map转换成对象的方法

    实现自动将Map转换成对象,借助第三方工具commons-beanutils-1.8.0.jar+commons-logging.jar实现,需要遵守的规则创建的对象的属性名必须与map的key相同. ...

  2. MapStruct Map 转换成对象

    背景 调用公司影像识别服务接口,返回值都是 Map<String,Object>类型,有的key很多.想把这种 map 结果转为项目中对应的JavaBean如DTO 或者 VO,又不想写很 ...

  3. java web 的map_javaweb开发过程中小工具系列之将Map转换成对象

    在javaweb项目的开发过程中,经常遇到要将一个Map集合转换成一个javabean对象,比如说将页面提交的数据封装到一个javabean中. 此小工具需要两个jar包 1:commons-bean ...

  4. JAVA中map转换成实体对象

    /** @ClassName:QueryVOToBeanUtil @author: 短笛吟风 @description:TODO @createDate: 2020/2/18 @version: 1. ...

  5. [转]jackson json字符串、map、java对象的转换例子

    ackson框架 json字符串.map.java对象的转换例子 先下载框架jar包: 下面是一些例子: package jackson; import java.io.File; import ja ...

  6. Flutter实战——Map Json Object对象转换

    最近在写Flutter代码,发现iOS侧使用的是字典类型(Map),而我们Android使用的是对象类型. 数据类型完全不同,这可咋整? 于是研究了一下Map相关的Json转换,希望能帮助到大家 本篇 ...

  7. js 中动态添加成员对象与数组或map转换(成员字段含有.)

    var obj = {}; key="pram" value="test" obj[key] = value;  => obj = {pram: &quo ...

  8. java反射实现自定义json转对象方法-忽略字段大小写、字段个数

    java反射实现自定义json转对象方法-忽略字段大小写.字段个数 开发过程中经常会遇到json转对象,可以使用FastJson或者Gson自带的工具类进行转换,但当遇到json与对象属性名称大小写不 ...

  9. java 把map转换成json_map转换成JSON的3种方法

    1 json-lib net.sf.json-lib json-lib 2.4 jdk15 import java.util.HashMap; import java.util.Map; import ...

最新文章

  1. Go 面向对象三大特性
  2. Centos 6.4使用本地yum源
  3. NVIDIA显卡驱动版本,CUDA版本,cudnn版本之间关系及如何选择
  4. 037-PHP如何返回闭包函数实例
  5. Spark家族:Win10系统下搭建Scala开发环境
  6. android 8.0 三星,这些三星手机竟到2019年才能升级安卓8.0:等到头发都白了
  7. 学fpga(在线verilog编程)
  8. 代码实现识别部分截图在整张图片中的位置_基于神经网络的OCR识别
  9. python教程(八)之异常(8.Warn)
  10. web安全day3:文件共享服务器配置、共享权限和445端口
  11. 苹果充电慢是什么原因_成都苹果维修点告诉你为什么iPhone手机不能在关机状态下充电?...
  12. RapidASR项目(语音转文本):更快、更容易部署、开箱即用
  13. Redis应用场景-排行榜
  14. Java项目专栏之数据库建表
  15. 理解Javascript的正则表达式
  16. R语言学习笔记3_探索性/描述性数据分析
  17. 互联网人租房有多难?听完这6位的自白,瞬间破防了 ....
  18. mac下连接mysql数据库_mac 系统下安装MYSQL数据库
  19. 马云马化腾崇拜的硅谷大神:这十二个趋势是未来致富之路(上)
  20. 经典问题总结——开关灯问题

热门文章

  1. 2021四川省级计算机设计大赛,喜报:我校学生在2021年四川省计算机设计大赛中荣获佳绩...
  2. 模拟雷神飞机游戏(简易版)
  3. windows10安装达梦数据库
  4. 全网最硬核 JVM TLAB 分析 4. TLAB 基本流程全分析
  5. 日本半导体行业衰落的原因分析
  6. 使用MockBackend开发没有后端的Angular应用
  7. 电力载波ES1642芯片使用经验(中继部分测试)
  8. php 数据图形,15款经典图表软件推荐_php
  9. 如何设计单点登录代理SSOP?
  10. ESP32-S3物联网技术应用,可视门铃物智能响应发展