上述中,映射两边的对象不同时
时间: 2024-03-05 15:50:27 浏览: 21
如果映射的两个Java Bean不是同一个类,我们需要在Mapper接口中定义一个方法,用于将源对象映射到目标对象。例如:
```java
public class SourceBean {
private String name;
private int age;
// getter and setter
}
public class TargetBean {
private String fullName;
private int age;
// getter and setter
}
@Mapper
public interface MyMapper {
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
@Mappings({
@Mapping(source = "name", target = "fullName")
})
TargetBean sourceToTarget(SourceBean sourceBean);
}
```
在这个示例中,我们定义了一个SourceBean和一个TargetBean,它们之间的属性不完全相同。SourceBean中有一个name属性,而TargetBean中有一个fullName属性。在Mapper接口中,我们定义了一个sourceToTarget方法,用于将SourceBean映射到TargetBean。在这个方法中,我们使用@Mappings注解定义了属性之间的映射关系。例如,@Mapping(source = "name", target = "fullName")表示SourceBean中的name属性映射到TargetBean中的fullName属性。
然后,我们就可以使用MyMapper.INSTANCE.sourceToTarget方法将SourceBean转换为TargetBean了,例如:
```java
SourceBean sourceBean = new SourceBean();
sourceBean.setName("张三");
sourceBean.setAge(18);
TargetBean targetBean = MyMapper.INSTANCE.sourceToTarget(sourceBean);
System.out.println(targetBean.getFullName()); // 输出:张三
System.out.println(targetBean.getAge()); // 输出:18
```
这样,我们就完成了不同Java Bean之间的属性映射。MapStruct能够根据我们定义的属性映射关系,自动生成映射代码,大大提高了开发效率。