Hutool是一个Java工具库,提供了许多实用的工具类和方法,其中BeanUtil是一个常用的工具类,用于Java Bean和Map之间的转换。
包路径:
文章目录
- Bean 转 Map
- beanToMap(Object bean, String... properties)
- beanToMap(Object bean, boolean isToUnderlineCase, boolean ignoreNullValue)
- Map 转 Bean
- toBean(Object source, Class
clazz) - toBeanIgnoreCase(Object source, Class
clazz, boolean ignoreError)
- toBean(Object source, Class
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;
}