Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >两个方向的映射/扁平嵌套属性

两个方向的映射/扁平嵌套属性
EN

Stack Overflow用户
提问于 2018-04-19 12:13:26
回答 1查看 134关注 0票数 0

我有一个实体类,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SomeEntity {
  int id;
  string name;
  date created;
}

我有一个dto课程,就像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SomeDto {
   class SomeDtoAttributes {
      string name;
      date created;
   }

   string id;
   SomeDtoAttributes attributes;
}

基本上,除了id之外,实体上的所有属性都会放在dto上的attributes属性中。

我希望这个映射器能够被其他实体/dtos重用,这些实体/dtos遵循相同的模式,但具有不同的属性。

我已经阅读了文档,但我不清楚如何实现这一点。目前,我有这样的情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
abstract class EntityMapper<DTO, DTOA E> {

    abstract E toEntity(DTO dto, DTOA attributes);

    abstract DTO toDto(E entity);

    abstract DTOA toDtoAttributes(E entity);

    abstract List<E> toEntityList(List<DTO> dtos);

    abstract List<DTO> toDtoList(List<E> entities);

    @AfterMapping
    protected void afterMapping(@MappingTarget DTO dto, E entity) {
        DTOA dtoAttributes = this.toDtoAttributes(entity);
        dto.setAttributes(dtoAttributes);
    }
}

但是,我不喜欢在dto方法中传递dtoAttributesdtoAttributes,而toEntityList方法没有填充返回实体的属性属性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-20 11:38:19

如果你的实体和dtos都是这样的话。在一些接口和泛型的帮助下,您可以实现这样的目标。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SomeDto implements Dto<SomeDtoAttribute> {
   class SomeDtoAttributes implements DtoAttributes {
      String name;
      date created;
   }

   String id;
   SomeDtoAttributes attributes;
}

然后在你的地图里你可以做到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
abstract class EntityMapper<DTO extends Dto<DTOA>, DTOA, E> {

    E toEntity(DTO dto) {
        E entity = toEntity(dto.getAttributes());
        if (entity != null) {
            entity.setId(dto.getId());
        }
        return entity;
    }

    @Mapping(target = "id", ignore = true)    
    abstract E toEntity(DTOA dtoAttributes);

    abstract DTO toDto(E entity);

    abstract DTOA toDtoAttributes(E entity);

    abstract List<E> toEntityList(List<DTO> dtos);

    abstract List<DTO> toDtoList(List<E> entities);

    @AfterMapping
    protected void afterMapping(@MappingTarget DTO dto, E entity) {
        DTOA dtoAttributes = this.toDtoAttributes(entity);
        dto.setAttributes(dtoAttributes);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49929486

复制
相关文章
嵌套数组的合并,扁平化数组
对于 [ [], [], [], ...] 数组里嵌套数组,有个需求:将里面的数组元素都放到外层数组,变成 , , , ...
Krry
2018/10/12
2.2K0
嵌套数组的合并,扁平化数组
341. 扁平化嵌套列表迭代器
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。 列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。 示例 1: 输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。 主要是联系一下简单递归, 题目不是特别好,可以做! public class NestedIt
CaesarChang张旭
2021/06/09
4750
LeetCode:扁平化嵌套列表迭代器_341
给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。
Yuyy
2022/06/28
4480
MyBatis的“基于嵌套select”映射的剖析
本文详细分析了MyBatis中“基于嵌套select”映射策略的性能缺陷、并给出了具体的实施建议,本文适合对MyBatis有一定使用经验的读者阅读,对MyBatis小白不适合。
疯狂软件李刚
2020/06/24
2.1K0
2021-11-08:扁平化嵌套列表迭代器。给你一个嵌套的整数
2021-11-08:扁平化嵌套列表迭代器。给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。实现扁平迭代器类 NestedIterator :NestedIterator(List<NestedInteger> nestedList) 用嵌套列表 nestedList 初始化迭代器。int next() 返回嵌套列表的下一个整数。boolean hasNext() 如果仍然存在待迭代的整数,返回 true ;否则,返回 false 。力扣341。
福大大架构师每日一题
2021/11/08
5180
Entity Framework 私有属性映射
这篇文章纯属自娱自乐,因为在实际开发中用到私有化属性映射的可能性几乎为0。在EF中默认映射的是具有 public 修饰符的属性,但是如果是 internal 、 private 和 protected 修饰的属性要映射进数据库怎么做呢?下面我们分别来讲解一下。
喵叔
2020/09/08
4520
Python使用递归对任意嵌套列表进行扁平化
首先补充一个地方,之前有个文章演示的是猜数游戏,原文链接为猜数游戏用Python应该这样写,代码中漏掉了一个break语句,也就是说,在猜对的时候输出语句print('Congratulations!')后面应增加一个break,否则会让玩家继续猜,这是不合理的。 下面的今天的内容。 有时候可能会需要这样的功能:把任意深度的嵌套列表扁平化,例如把[1, 2, [3, [4]]]和[1, [2, [3, [4]]]]都变成[1, 2, 3, 4]的形式,由于提前无法确定列表的嵌套深度,这种情况比较适合使用递归
Python小屋屋主
2018/04/16
2.3K0
Entity Framewor简单属性映射
默认情况下可以不配置表名,我们的模型名称将会作为数据库的表名。但是大部分项目会要求数据库表名称的规范,例如我们要将模型 User 在数据库中映射为 Users,那么我们可以这么做,在派生类上下文中的 OnModelCreating 中进行如下定义:
喵叔
2020/09/08
7560
Entity Framework 简单属性映射
默认情况下可以不配置表名,我们的模型名称将会作为数据库的表名。但是大部分项目会要求数据库表名称的规范,例如我们要将模型 User 在数据库中映射为 Users,那么我们可以这么做,在派生类上下文中的 OnModelCreating 中进行如下定义:
喵叔
2020/09/08
8840
通过cycler实现属性的自动映射
在matplotlib中,默认存在一个颜色 的自动映射机制,当我们绘制多条直线时,会通过这个颜色映射机制来为每条直线赋予不同的颜色,代码如下
生信修炼手册
2020/09/14
6550
LeetCode 341. 扁平化嵌套列表迭代器(双栈)
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/flatten-nested-list-iterator 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Michael阿明
2020/07/13
6320
LeetCode 341. 扁平化嵌套列表迭代器(双栈)
JPA 的 CascadeType 属性 和 FetchType属性 和 各种映射关系
代码地址:https://gitee.com/a247292980/lgp20151222 
ydymz
2018/09/10
2.1K0
两个Repeater嵌套使用「建议收藏」
在C#中有时存在着两个嵌套循环的存在,此时可以使用两个Repeater进行循环获取到。
全栈程序员站长
2022/09/14
4070
Entity Framework复杂类型属性映射
以上代码在ORM中称为组合类,EF会将这两个类映射在一张表中。当Code First发现不能推断出类的主键,并且没有通过Data Annotations或Fluent API注册主键,那么该类型将被自动注册为复杂类型。
喵叔
2020/09/08
6980
Entity Framework复杂类型属性映射
ECharts分段型视觉映射组件的属性修改
ECharts文档:https://www.w3cschool.cn/echarts_tutorial/echarts_tutorial-4hnc2d9j.html
王小婷
2019/05/05
1.1K0
ECharts分段型视觉映射组件的属性修改
Java属性和Map映射通用方案
有类似JSON的key和实体属性不对应的场景,可以通过JSON类库提供的注解加在属性上填写值别名,然后JSON转换类可以实现正确的转换。
明明如月学长
2021/08/31
1.1K0
(Leetcode 2021 刷题计划) 341. 扁平化嵌套列表迭代器
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
windism
2021/03/25
5510
gorm将查询结果映射到自定义嵌套结构体,嵌套预加载
我在前面的文章中多处提到gorm如何将查询结果映射到自定义结构体,都没解决,本次就解决了。
hotqin888
2022/03/10
3.9K0
spring 自定义配置属性 嵌套 集合
@ConfigurationProperties("init-data.auth") public class AuthProperties { // 嵌套 @NestedConfigurationProperty private UserDetails admin; // 集合 private Set<UserDetailsProperties> users; private List<ResourceDetailsProperties> resources; private C
路过君
2020/06/19
1.1K0
47. Vue使用children属性实现路由嵌套
前面基本演示完了vue-router的基本用法,但是当组件之间嵌套子组件,这个嵌套的路由该怎么写呢?
Devops海洋的渔夫
2020/07/22
2.3K0

相似问题

Terraform -扁平嵌套映射

13

Clojure -递归的扁平嵌套映射

24

扁平嵌套对象以将其属性映射到目标对象

10

递归地扁平嵌套对象的映射。

314

UnderscoreJS -如何扁平嵌套属性

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文