Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将存储库类委托给实现BaseDao的多个Daos有可能吗?

将存储库类委托给实现BaseDao的多个Daos有可能吗?
EN

Stack Overflow用户
提问于 2019-10-12 05:48:49
回答 1查看 117关注 0票数 8

我已经为我的Android应用程序创建了一个Room数据库。My FooDao和BarDao都实现了BaseDao:

代码语言:javascript
运行
AI代码解释
复制
interface BaseDao<T> {
    @Insert
    fun insert(obj: T): Long
    @Update
    fun update(obj: T)
}

@Dao
interface FooDao: BaseDao<FooEntity> {
    @Query("some query")
    fun doSomethingWithFoo()
}

@Dao
interface BarDao: BaseDao<BaseEntity> {
    @Query("some other query")
    fun doSomethingWithBar()
}

我也有一个仓库类:

代码语言:javascript
运行
AI代码解释
复制
class MyRepo(private val fooDao: FooDao, private val barDao: BarDao) {
    fun doSomethingWithFoo() = fooDao.doSomethingWithFoo()
    fun doSomethingWithBar() = barDao.doSomethingWithBar()
}

但是想象一下,FooDao、BarDao和MyRepo不仅仅有这两个函数。

我已经了解了如何使用类委托来实现组合继承。因此,我试图减少MyRepo中的模板,让它委托简单的函数,这些函数只是调用dao的函数并返回dao的返回值。我应该这样做是有意义的:

代码语言:javascript
运行
AI代码解释
复制
class MyRepo(...): FooDao by fooDao, BarDao by barDao {
    //fun doSomethingWithFoo no longer necessary
    //fun doSomethingWithBar no longer necessary
}

然而,Android Studio给了我一个红色的曲折,上面写着Type parameter T of BaseDao has inconsistent values: FooEntity, BarEntity

这是不是意味着减少像MyRepo.doSomethingWithFoo = fooDao.doSomethignWithFoo这样的样板文件的希望破灭了?或者,有没有办法做到这一点?

我试图实际覆盖MyRepo中的BaseDao函数,以为它会停止抱怨FooEntity和BarEntity:

代码语言:javascript
运行
AI代码解释
复制
class MyRepo(...): BaseDao<Any>, SetDao by setDao, ... {
    override fun insert(t: Any): Long = 0L
}

但这只是在不一致类型消息中添加了"Any“。

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 04:52:10

我也面临着同样的问题,并用注解替换了泛型类。

我们最近发布了我们的库LivingRoom

您只需使用适当的注释标记实体类(@Insertable、@Deletable、@Updatable、@Selectable ...)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58351265

复制
相关文章
为什么 strace 在 Docker 中不起作用?
在编辑“容器如何工作”爱好者杂志的能力页面时,我想试着解释一下为什么 strace 在 Docker 容器中无法工作。
用户8639654
2021/09/18
6.5K0
在bootstrap中col-md-offset-* 偏移不起作用
在bootstrap中,使用col-md-offset-1、col-md-offset-2、col-md-offset-3、col-md-offset-4等来设置偏移量很常见,但最近就遇到一个问题了,在最新版的bootstrap4.5中,这个值不起作用了。
kirin
2020/10/27
12.7K1
springboot设置时区不起作用_docker设置时区
此时数据库时区、容器时区、springboot时区都是CST,输出的时间还是可能差8小时,这因为Date进行json的时候还存一个时区,而springboot默认json工具是jackson,采用的是UTC时区。需要一下配置。注意:如果项目WebMvcConfig采用的是继承WebMvcConfigurationSupport,而不是实现WebMvcConfigurer接口的话,下面的配置会不生效。
全栈程序员站长
2022/11/09
2.7K0
springboot设置时区不起作用_docker设置时区
List.append() 在 Python 中不起作用,该怎么解决?
Python 是一种强大而灵活的编程语言,它提供了许多方便的数据结构和操作方法,其中之一就是列表(List)。列表是一个有序的集合,可以包含不同类型的元素,并且可以进行添加、删除和修改等操作。在 Python 中,我们通常使用 List.append() 方法向列表末尾添加元素。然而,在某些情况下,你可能会遇到 List.append() 方法不起作用的问题。本文将详细讨论这个问题并提供解决方法。
网络技术联盟站
2023/06/01
2.8K0
SpringBoot项目结构
演示代码地址:kuizuo/spring-boot-demo (github.com)
愧怍
2022/12/27
1.3K1
SpringBoot项目结构
PageHelper在springboot中的使用
使用PageHelper.startPage 静态方法调用startPage : 特点:
知识浅谈
2021/03/03
4.1K0
在SpringBoot中实践AOP编程
Spring AOP是Spring框架中一个支持实现面向切面编程的模块,由于Spring Boot已经把Spring框架组合得非常好用,所以在基于Spring Boot框架的项目中实现AOP编程也是非常方便,具体来说可以分为如下几步: 第一步: 在项目中引入依赖配置。
编程随笔
2023/10/15
2940
在springboot 中配置使用servlet
还记得,说到web项目,最早接触的就是servlet,实际上SSH项目,也是依赖于servlet,在web.xml文件中进行配置。那么使用了springboot之后,不仅有一个疑问,虽然SpringMVC已经帮我们很容易的实现了spring web项目的使用,只需要@Controller就能搞定。但是我们需要使用servlet该如何做呢?虽然这种需求非常少,但是在springboot的官方文档对servlet的使用有过描述。下面我们来看看在springboot中如何使用和配置servlet。
冬天里的懒猫
2021/03/02
5K0
在SpringBoot中处理跨域
跨域请求会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。
徂暑
2020/02/29
1.7K0
Spring Boot 2.0 版的开源项目云收藏来了!
先给大家晒一下云收藏的几个数据,作为一个 Spring Boot 的开源项目(https://github.com/cloudfavorites/favorites-web)目前在 Github 上面已经有1600多个 Star,如果按照 SpringBoot 标签进行筛选的话也可以排到第五位。 当云收藏1.0开发完成之后,同步将云收藏部署到了服务器上,申请了一个域名www.favorites.ren方便大家使用,到目前为止:网站的注册用户4000多人,共计收藏文章100000多条,在百度上搜索:云收藏,排
纯洁的微笑
2018/07/20
8710
【快学springboot】在springboot中写单元测试
很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码。写单元测试,也是保证代码质量的一种方式。
Happyjava
2019/07/16
1.4K0
【快学springboot】在springboot中写单元测试
[常见问题]在Linux下执行Redis命令不起作用.
redis 127.0.0.1:6379> 这个后面无论输入什么命令都没有返回 ok 或者其他的信息,一直保持截图的状态: 解决方法: 在SecureCRT中设置Options-->SessionO
一枝花算不算浪漫
2018/05/18
1.9K0
findById引发的Java泛型思考
在Android中最头痛的就是不停的findById需要不停的进行类型转换,那么怎么实现在findById的时候直接设置转换后的类型呢?
大话swift
2019/10/22
5190
findById引发的Java泛型思考
SpringBoot 企业微信点餐系统实战二:日志配置、商品类目开发
将 application.properties 改名为 application.yml ,不改也行但 yml 文件写起来更爽。配置数据库连接和 jpa
solocoder
2022/04/06
5030
springboot 在idea中实现热部署
SpringBoot的web项目,在每一次修改了java文件或者是resource的时候,都必须去重启一下项目,这样的话浪费了很多的时间,实现了热部署,在每一次作了修改之后,都会自动的重启
java思维导图
2018/11/05
8730
spock在springboot中的使用 转
在spring环境中使用spock,也就是要自动注入被测试的实例,不需要我们手动初始化实例。
yawn
2019/08/24
1.6K0
SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
品茗IT
2019/09/09
4550
SpringCloudGateWay中跨域配置不起作用
👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: 问题(BUG)集合 🌈 每日一语:纯纯降智的我 🌈 问题描述 SpringCloudGateWay中跨域配置不起作用 使用filter @Component public class CORSFilter implements Filter{ @Override public void doFilter(ServletRequest request, Serv
才疏学浅的木子
2022/11/13
1.3K0
SpringCloudGateWay中跨域配置不起作用
SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
品茗IT
2019/09/12
3880
springclound快速入门
一、开始使用springcloud实战微服务 1.工具及软件版本选择 jdk 1.8 springboot 1.5.9 springcloud edgware springtool suite /
微醺
2019/01/17
8300

相似问题

findById比findOne快吗?

13

结果,findById返回findOne语句

12

mongoose findById或findone不是wotking

434

在find、findOne或findById之后使用Mongoose save()

10

findById比findOne({userId: userId})快吗?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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