mirror of
https://gitee.com/easii/mapstruct-plus.git
synced 2025-12-06 17:18:43 +08:00
2.3 KiB
2.3 KiB
title, order, category, description
| title | order | category | description | |
|---|---|---|---|---|
| Map to Object | 2 |
|
MapStructPlus Map转为对象 map convert to class |
MapStructPlus provides more powerful function for Map<String, Object> to object
Usage
Just add the @AutoMapMapper annotation to the target class when you want to automatically generate the interface and implementation classes that Map<String, Object> to the target class.
The supported value type
StringBigDecimalBigIntegerIntegerLongDoubleBooleanDateLocalDateTimeLocalDateLocalTimeURIURLCalendarCurrencyCustom classes(custom classes also require @AutoMapMapper annotation)
Transformation logic
For an attribute in the target class, it first determintes whether the key exists in the Map. If it does, it first determines the type, the conversion is attempted to the target type based on the type conversion tool provided by Hutool
It also supports internally nested Map<String, Object attributes to internally nested custom type attributes.
Example
- Define two class:
MapModelA和MapModelB
:::: code-group ::: code-group-item MapModelA
@AutoMapMapper
@Data
public class MapModelA {
private String str;
private int i1;
private Long l2;
private MapModelB mapModelB;
}
::: ::: code-group-item MapModelB
@AutoMapMapper
@Data
public class MapModelB {
private Date date;
}
::: ::::
- Test
@SpringBootTest
public class QuickStartTest {
@Autowired
private Converter converter;
@Test
public void test() {
Map<String, Object> mapModel1 = new HashMap<>();
mapModel1.put("str", "1jkf1ijkj3f");
mapModel1.put("i1", 111);
mapModel1.put("l2", 11231);
Map<String, Object> mapModel2 = new HashMap<>();
mapModel2.put("date", DateUtil.parse("2023-02-23 01:03:23"));
mapModel1.put("mapModelB", mapModel2);
final MapModelA mapModelA = converter.convert(mapModel1, MapModelA.class);
System.out.println(mapModelA); // MapModelA(str=1jkf1ijkj3f, i1=111, l2=11231, mapModelB=MapModelB(date=2023-02-23 01:03:23))
}
}