当前位置: 首页 > 知识库问答 >
问题:

Android Clean架构:当模型涉及两个房间的桌子时,缓存映射

曹君墨
2023-03-14

我有一个将两个表连接在一起的查询。我在kotlin中创建了一个数据类,其中包含我需要查询返回的每个表的变量。当我在DAO查询中更新模型时,我显然必须通过更新模型类的干净拱的层。我到了映射实体到域层的Mapper类。这里我遇到了一个问题,因为这个函数只能扩展到一个房间实体,我的数据类引用了两个表中的值。

界面

interface EntityMapper <Entity, DomainModel>{

fun mapFromEntity(entity: Entity): DomainModel
fun mapToEntity(domainModel: DomainModel): Entity
}

 fun entityListToList(entityTableA: List<TableA>): List<Model> {
    val list: ArrayList<Model> = ArrayList()
    for (entity in entityTableA) {
        list.add(mapFromEntity(entity))
    }
    return list
}


fun listToEntityList(entityTableA: List<Model>): List<TableA> {
    val entity: ArrayList<TableA> = ArrayList()
    for (entity in entityTableA) {
        entity.add(mapToEntity(entityTableA))
    }
    return entityTableA
}


override fun mapFromEntity(entityTableA: TableA): Model{
    return Model()
}


 override fun mapToEntity(domainModel: Model): TableA{
    return TableA
}

所以这个函数缺少表B中的所有值,因为我不能在mapper函数中扩展两个表。人们如何解决这个问题,因为在干净的体系结构中运行联合查询是可能的,否则在任何不简单的应用程序中都是毫无意义的。

共有1个答案

子车鸿才
2023-03-14

您没有提供足够的代码,但我猜您的映射器看起来是这样的:

interface Mapper<F, S> {
    fun firstToSecond(first: F): S
    fun secondToFirst(second: S): F
}

然后,如果需要将一个类映射到两个单独的类,则需要使用对。

class MyMapper<CustomModel, Pair<TableA, TableB> {
    override fun mapToEntity(domainModel: CustomModel): Pair<TableA, TableB>{
        ...
}

 类似资料:
  • 本文向大家介绍讲一下volatile涉及的Java内存模型?相关面试题,主要包含被问及讲一下volatile涉及的Java内存模型?时的应答技巧和注意事项,需要的朋友参考一下 在 JDK1.2 之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可

  • 使用Spring MVC,我们通常会看到控制器、服务和存储库层。仓库层使用实体模型,实体模型与数据库是一对一的映射。我想过跟着- 服务层应该使用相同的实体模型吗? 服务层应该使用单独的域模型吗?如果是,那么到/到来回映射应该在服务层完成? 控制器层我们应该使用相同的域模型吗? 控制器层应该使用单独的DTO模型吗?如果是,那么到/来回映射应该在控制器层完成? 我们有什么简单的方法可以在不写太多冗长代

  • 我需要创建一个容器,为我存储泛型类型的元素提供一种方式,有点像这个有效的Java模式,但是存储泛型的东西 有没有可能创建一个类型安全异构容器,其中涉及到泛型类型的东西? 我可以将添加为方法参数。示例: 有可能做到这一点吗? 怎么做,或者为什么不做?它是Java不做的事情还是基本的事情(所以没有语言可以做,或者只是做没有意义)

  • 在高频的业务场景下,我们可能会频繁的查询数据库获取业务数据,虽然有主键索引的加持,但也不可避免的对数据库性能造成了极大的考验。而对于这种 kv 的查询方式,我们可以很方便的通过使用 模型缓存 来减缓数据库的压力。本组件实现了 Model 数据自动缓存的功能,且当删除和修改模型数据时,自动删除和修改对应的缓存。执行累加、累减操作时,缓存数据自动进行对应累加、累减变更。 模型缓存暂时只支持 Redis

  • This section explains the PX4 middleware and architecture, including device drivers, mechanisms for communicating with offboard companion computers and GCS (e.g. MAVLink, RTPS), and the uORB publish-s