两个扩展表传递所有参数,并且保留各自有主表的id 用代码实现
时间: 2024-03-08 18:48:45 浏览: 21
假设有两个扩展表 `old_table1` 和 `old_table2`,它们各自与主表 `main_table1` 和 `main_table2` 相关联,要将它们的数据分别复制到新的扩展表 `new_table1` 和 `new_table2` 中,并保留各自的主表 id,可以按照以下方式实现:
```
@Mapper
public interface ExtensionTableMapper {
ExtensionTableMapper INSTANCE = Mappers.getMapper(ExtensionTableMapper.class);
@Mappings({
@Mapping(target = "id", source = "oldTable1.id"),
@Mapping(target = "col1", source = "oldTable1.col1"),
@Mapping(target = "col2", source = "oldTable1.col2"),
@Mapping(target = "mainTableId", source = "mainTable1.id")
})
NewTable1 mapToNewTable1(OldTable1 oldTable1, MainTable1 mainTable1);
@Mappings({
@Mapping(target = "id", source = "oldTable2.id"),
@Mapping(target = "col1", source = "oldTable2.col1"),
@Mapping(target = "col2", source = "oldTable2.col2"),
@Mapping(target = "mainTableId", source = "mainTable2.id")
})
NewTable2 mapToNewTable2(OldTable2 oldTable2, MainTable2 mainTable2);
}
```
在上述代码中,我们使用 MapStruct 来实现两个扩展表的映射。对于每个扩展表,我们都定义了一个 `mapToNewTableX` 方法,其中 `X` 表示表的编号。
在 `@Mappings` 注解中,我们使用 `@Mapping` 注解来指定每个源字段与目标字段之间的映射关系。对于每个扩展表,我们都需要映射它们的 id、col1、col2 和主表的 id。这些字段分别对应于源对象 `OldTableX` 和目标对象 `NewTableX` 中的属性。
最后,我们将源对象 `OldTableX` 和主表对象 `MainTableX` 作为方法参数传递给 `mapToNewTableX` 方法。在方法内部,MapStruct 会自动将源对象和目标对象转换为我们指定的类型,并执行映射操作。映射结果是一个新的目标对象 `NewTableX`,其中包含了所有的映射数据,包括各自的主表 id。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)