@BeanMapping(ignoreByDefault = true)
时间: 2023-07-13 18:21:03 浏览: 66
`@BeanMapping(ignoreByDefault = true)` 是 MapStruct 中的一个注解,用于指定在进行对象属性映射时,是否忽略目标对象中没有指定映射关系的属性。具体来说,如果使用了 `@BeanMapping(ignoreByDefault = true)` 注解,则表示目标对象中除了被显示指定映射关系的属性之外,其他属性都应该被忽略。
例如,假设有两个类 `Source` 和 `Target`,它们有相同的属性名但类型不同,同时还有一个额外的属性 `extra`:
```java
public class Source {
private int id;
private String name;
private String extra;
// getters and setters
}
public class Target {
private long id;
private String name;
private int age;
// getters and setters
}
```
可以使用以下 MapStruct 映射接口将 `Source` 类型的对象转换为 `Target` 类型的对象,同时只映射 `id` 和 `name` 属性:
```java
@Mapper
public interface SourceTargetMapper {
@BeanMapping(ignoreByDefault = true)
@Mappings({
@Mapping(source = "id", target = "id"),
@Mapping(source = "name", target = "name")
})
Target sourceToTarget(Source source);
}
```
在上面的例子中,`@BeanMapping(ignoreByDefault = true)` 注解表示目标对象中除了被显示指定映射关系的属性之外,其他属性都应该被忽略。因此,当调用 `sourceToTarget()` 方法时,MapStruct 只会执行 `id` 和 `name` 属性之间的映射,而忽略 `age` 属性。同时,`extra` 属性也会被忽略,因为它没有被显示指定映射关系。