Map与Bean互转

Hutool是一个Java工具库,提供了许多实用的工具类和方法,其中BeanUtil是一个常用的工具类,用于Java Bean和Map之间的转换。

包路径:cn.hutool.core.bean.BeanUtil

Bean 转 Map

beanToMap(Object bean, String… properties)

  • bean:需要转换的Java Bean对象。
  • properties:需要拷贝的属性值,null或空表示拷贝所有值

	@GetMapping("/test")
	public void test(@RequestParam Integer x) {

		MyClass myClass = new MyClass();
		myClass.setMyName("Liwell");
		myClass.setMyAge(18);
		myClass.setMyHeight(null);

		// {"myName":"Liwell","myAge":18,"myHeight":null}
		Map<String, Object> map1 = BeanUtil.beanToMap(myClass);
		
		// {"myName":"Liwell"}
		Map<String, Object> map2 = BeanUtil.beanToMap(myClass, "myName");
	}
	

beanToMap(Object bean, boolean isToUnderlineCase, boolean ignoreNullValue)

  • bean:需要转换的Java Bean对象。
  • isToUnderlineCase:是否将Java Bean对象的属性名转换为下划线风格的字符串(例如:myName -> my_name)
  • ignoreNullValue:是否忽略Java Bean对象中值为null的属性。

	@GetMapping("/test")
	public void test(@RequestParam Integer x) {

		MyClass myClass = new MyClass();
		myClass.setMyName("Liwell");
		myClass.setMyAge(18);
		myClass.setMyHeight(null);

		// {"myName":"Liwell","myAge":18,"myHeight":null}
		Map<String, Object> map1 = BeanUtil.beanToMap(myClass, false, false);
		
		// {"my_name":"Liwell","my_age":18,"my_height":null}
		Map<String, Object> map2 = BeanUtil.beanToMap(myClass, true, false);
		
		// {"my_name":"Liwell","my_age":18}
		Map<String, Object> map3 = BeanUtil.beanToMap(myClass, true, true);
	}
	

Map 转 Bean

toBean(Object source, Class clazz)

自动识别下划线,无法识别大小写

  • source:需要转换为目标类型的源对象。
  • clazz:目标类型的类对象。
	@GetMapping("/test")
	public void test() {

		Map<String, Object> map = new HashMap<>();
		map.put("my_name", "Liwell");
		map.put("myage", 18);
		map.put("myHeight", 183);

		// {"myName":"Liwell","myAge":null,"myHeight":183}
		MyClass myClass = BeanUtil.toBean(map, MyClass.class);
	}


	@Data
	static class MyClass {
		private String myName;
		private Integer myAge;
		private Integer myHeight;
	}

toBeanIgnoreCase(Object source, Class clazz, boolean ignoreError)

自动识别下划线和大小写

  • source:需要转换为目标类型的源对象。
  • clazz:目标类型的类对象。
  • ignoreError:是否忽略注入错误

	@GetMapping("/test")
	public void test() {

		Map<String, Object> map = new HashMap<>();
		map.put("my_name", "Liwell");
		map.put("myage", 18);
		map.put("myHeight", 183);

		// {"myName":"Liwell","myAge":18,"myHeight":183}
		MyClass myClass = BeanUtil.toBeanIgnoreCase(map, MyClass.class, true);
	}

	@Data
	static class MyClass {
		private String myName;
		private Integer myAge;
		private Integer myHeight;
	}
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值