如何解决Android Clean架构:模型引用两个房间表时的缓存映射
我有一个将两个表连接在一起的查询。我在kotlin中创建了一个数据类,其中包含查询需要返回的每个表的val。当我在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
}
因此,由于我无法在mapper函数中扩展两个表,因此该函数缺少表B中的所有值。人们如何解决这个问题,大概可以在干净的架构中运行联接查询,否则在任何不简单的应用程序中都是毫无意义的。
解决方法
您没有提供足够的代码,但我猜您的映射器看起来像这样:
interface Mapper<F,S> {
fun firstToSecond(first: F): S
fun secondToFirst(second: S): F
}
然后,如果您需要将一个类映射到两个单独的类,则需要使用Pair
。
class MyMapper<CustomModel,Pair<TableA,TableB> {
override fun mapToEntity(domainModel: CustomModel): Pair<TableA,TableB>{
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。