Java实体类转Map、Map转实体类

2023-11-19

1、创建entity(User.java)

package com.jeff.entity;

public class User {

	private String userName;
	private String password;
	private Integer age;

	public User() {
		super();
	}

	public User(String userName, String password, Integer age) {
		super();
		this.userName = userName;
		this.password = password;
		this.age = age;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [userName=" + userName + ", password=" + password + ", age=" + age + "]";
	}

}

2、创建utils(EntityUtils.java)

package com.jeff.utils;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class EntityUtils {
	/**
	 * 
	 * @description: 实体类转Map
	 * @author: Jeff
	 * @date: 2019年10月29日
	 * @param object
	 * @return
	 */
	public static Map<String, Object> entityToMap(Object object) {
		Map<String, Object> map = new HashMap<>();
		for (Field field : object.getClass().getDeclaredFields()) {
			try {
				boolean flag = field.isAccessible();
				field.setAccessible(true);
				Object o = field.get(object);
				map.put(field.getName(), o);
				field.setAccessible(flag);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return map;
	}

	/**
	 * 
	 * @description: Map转实体类
	 * @author: Jeff
	 * @date: 2019年10月29日
	 * @param <T>
	 * @param map    需要初始化的数据,key字段必须与实体类的成员名字一样,否则赋值为空
	 * @param entity 需要转化成的实体类
	 * @return
	 */
	public static <T> T mapToEntity(Map<String, Object> map, Class<T> entity) {
		T t = null;
		try {
			t = entity.newInstance();
			for (Field field : entity.getDeclaredFields()) {
				if (map.containsKey(field.getName())) {
					boolean flag = field.isAccessible();
					field.setAccessible(true);
					Object object = map.get(field.getName());
					if (object != null && field.getType().isAssignableFrom(object.getClass())) {
						field.set(t, object);
					}
					field.setAccessible(flag);
				}
			}
			return t;
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return t;
	}

}

3、创建Map转实体类(TestCopyObj3.java)

package com.jeff;

import java.util.HashMap;
import java.util.Map;

import com.jeff.entity.User;
import com.jeff.utils.EntityUtils;

public class TestCopyObj3 {

	public static void main(String[] args) throws Exception {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("userName", "Jeff");
		map.put("password", "123456");
		map.put("age", 18);
		System.out.println("Map对象:" + map);
		User user = EntityUtils.mapToEntity(map, User.class);
		System.out.println("User对象:" + user);
	}

}

4、控制台输出结果
在这里插入图片描述
5、创建实体类转Map(TestCopyObj4.java)

package com.jeff;

import java.util.Map;

import com.jeff.entity.User;
import com.jeff.utils.EntityUtils;

public class TestCopyObj4 {

	public static void main(String[] args) throws Exception {
		User user = new User("Jeff", "123456", 18);
		System.out.println("User对象:" + user);
		Map<String, Object> map = EntityUtils.entityToMap(user);
		System.out.println("Map对象:" + map);
	}

}

6、控制台输出结果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实体类转Map、Map转实体类 的相关文章

随机推荐

  • 如何在figma中做交互设计

    近一年来 Figma它可以说是体验设计领域最受欢迎的工具 最近 我开始频繁地工作 Axure9 0和Figma切换使用 深刻感受到设计细节带来的体验差异化 今天 通过一些细节和亮点 总结了工具软件体验设计的几个原则 添加图片注释 不超过 1
  • 手把手教你K最近邻分类器分类CIFAR-10

    KNN算法全称为k Nearest Neighbor Classifier 即k最近邻分类器 它可以看作是Nearest Neighbor Classifier最近邻分类器的加强版 无论是最近邻分类器还是k最近邻分类器 其原理都比较简单 其
  • 前端基础之JavaScript

    知识预览 JavaScript概述 JavaScript的基础 JavaScript的对象 BOM对象 DOM对象 实例练习 js扩展 一 JavaScript概述 JavaScript的历史 1992年Nombas开发出C minus m
  • Git 命令/配置笔记

    创建分支命令 git branch 分支名 切换分支命令 git checkout 分支名 合并分支 到当前分支 git merge 列出本地分支 git branch 删除分支 git branch d 分支名 指定标签信息命令 git
  • ESP8266 ERROR:cut here for exception decoder

    在使用ESP8266获取网站的json信息时 串口输出错误信息 cut here for exception decoder 解决办法 获取json的格式不正确 检查json格式的括号 是否缺少
  • 静态代码扫描中Java资源对象关闭的探究

    本人在探究静态代码扫描中资源对象关闭规则遇到了一些疑惑 本文将这些疑惑记录下来并逐一找出解答 包括在哪些情况下 这些资源对象需要手动关闭 怎么正确的关闭 哪些情况下不需要手动关闭 以及为什么 资源对象包括很多种 本文重点关注输入输出流对象和
  • Process in Shell

    PID current process Get Process Get Process Select Object Name Get Process processname jm Select Object Get Process proc
  • 将本地项目上传到自己公司的gitlab(或是官网gitlab)下(第一次上传)

    转自 https blog csdn net litianxiang kaola article details 74075151 自己公司的gitlab和官网gitlab都是以下的操作步骤 我是自己公司的gitlab已成功 1 安装git
  • python学习笔记(五)---函数

    函数的定义 定义一个函数要使用def语句 依次写出函数名 括号 括号中的参数和冒号 然后 在缩进块中编写函数体 函数的返回值用return语句返回 求绝对值的my abs函数 def my abs x if x gt 0 return x
  • 转载的开源干货

    android相关 第三方库 awesome android ui 大量 Android UI UX 库 大城小黄 recyclerview animators 一个关于RecyclerView items的动画库 一个简单的Recycle
  • 树形排序-TreeMap或者递归

    1TreeMap TreeMap来实现树形结构的排序 TreeMap是一个有序的key value集合 它是通过红黑树实现的 TreeMap默认按照key的升序排序 如果您想要按照每个层级的创建时间排序 您可以将每个节点的创建时间作为key
  • Failed to execute goal on project...

    从eclipse 换到idea 导入了一个maven的父子项目 在idea中的maven project idea双击shift键 执行maven package命令 结果报错 Failed to execute goal on proje
  • 【STM32】时钟系统知识

    基础知识 1 STM32 有5个时钟源 HSI HSE LSI LSE PLL HSI是高速内部时钟 RC振荡器 频率为8MHz 精度不高 HSE是高速外部时钟 可接石英 陶瓷谐振器 或者接外部时钟源 频率范围为4MHz 16MHz LSI
  • plc输入/输出模块的选择

    1 数字量输入模块的选择 1 选择电压等级 根据电压 有DC 5V 12V 24V 48V 60V和交流110V 220V 2 按保护形式分为隔离型和非隔离型两种 3 选择模块密度 按点数分为8分 16分 32分 64分 高密度模块 如32
  • ML--HMM(隐马尔可夫模型及python的实现1)

    1 综述 隐马尔可夫模型是马尔可夫模型的进一步发展 马尔可夫模型是马尔可夫过程的模型化 可以用图1 a 的框图形象表示 它把一个总随机过程看成一系列状态的不断转移 图1 b 是隐马尔可夫模型 1 1几个需要理解的概念 a 马尔可夫性 如果一
  • [QT编程系列-19]: 基础框架 - 信号与槽背后的编程思想

    目录 一 主要的架构思想 二 主要的编程思想 一 主要的架构思想 信号与槽 Signals and Slots 是Qt框架中的一种机制 背后的思想主要有以下几个方面 解耦和松耦合 信号与槽机制通过解耦发出信号的对象和处理信号的对象之间的依赖
  • SQL Server 2012的安装与环境配置以及在Java中连接数据库

    自学Java也已快有一个月了 虽然本人从事的是FPGA开发的工作 但是对于软件开发兴趣盎然 没办法只能工作之余自己慢慢自学了 这应该是我的第一篇Java学习文章 希望以后自己能够坚持 记录一些学习过程 做一些有意思的事 慢慢实现自己的目标吧
  • echarts雷达图自定义射线颜色、边框效果和背景样式

    目录 1 在官网找样例 2 初步改造示例 有个雏形 3 细节改造和优化 4 全部代码 5 原始效果和完成效果对比 1 在官网找样例 样例地址 Examples Apache ECharts 2 初步改造示例 有个雏形 对应的代码 为了说明问
  • 1.7 编程基础之字符串 15 整理药名 python

    http noi openjudge cn ch0107 15 1 7 编程基础之字符串 15 整理药名 http noi openjudge cn ch0107 15 Python字母大小写的转换 两种方法 https blog csdn
  • Java实体类转Map、Map转实体类

    1 创建entity User java package com jeff entity public class User private String userName private String password private I