You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Compose Room:能否为查询方法添加方法体判断数据是否存在?

问题解答

不能直接给带有@Query注解的抽象Dao方法添加方法体——Room框架会为这类抽象方法自动生成实现代码,自定义方法体会和生成的代码冲突,导致编译错误。

不过可以通过两种方式实现你想要的“判断数据是否存在”的逻辑:

方法一:直接让查询返回布尔值(推荐)

修改SQL语句,用EXISTS关键字直接返回布尔结果,这也是性能最优的方式(找到匹配行就立即终止查询,无需统计所有符合条件的行数):

@Query("SELECT EXISTS(SELECT 1 FROM table WHERE data = :data)")
fun isDataExist(data: String): Boolean

方法二:拆分方法,通过默认方法实现判断

先定义一个返回统计数的@Query方法,再在Dao接口中添加一个非抽象的默认方法来做判断:

@Query("SELECT COUNT(s_row) FROM table WHERE data = :data")
fun countMatchingData(data: String): Int

// Kotlin接口支持默认方法,Room不会为这个方法生成实现
fun isDataExist(data: String): Boolean {
    return countMatchingData(data) > 0
}

内容的提问来源于stack exchange,提问作者arist0v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:00:51