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

如何利用Android Room在DAO类中正确获取表名

和选
2023-03-14

不知道在Android房间查询中使用表名时,如何避免硬编码?我用kotlin开发,但老实说,在这个问题上,Java还是kotlin并不重要。

让我们看看简单的类:

DAO接口:

@Dao
interface UserDAO {

    @Query("SELECT * FROM USER")
    fun getAll(): List<User>
}

实体类:

@Entity(tableName = "USER")
class User {
}

您可以看到表名“user”是在userDAO中的@query中硬编码的。如何避免呢?如何引用@Entity参数TableName?

我想有所有的名字在一个而且只有一个地方。

共有1个答案

巫新知
2023-03-14

您可以在任何Util类中创建一个常量,并可以在Entity和Dao类中引用该变量,如下所示:-

假设在MainActivity中

    companion object {
        const val TABLE_NAME: String="Cheese"
    }

实体类

@Entity(tableName = MainActivity.TABLE_NAME)

而Dao类将是

@Query("SELECT * FROM "+MainActivity.TABLE_NAME)

注意:-这是一种避免硬编码命名的常用方法,可以从实体类中获取表名(需要研究):)。

 类似资料:
  • 问题内容: 从Python标准库的组件中获取异常消息的最佳方法是什么? 我注意到在某些情况下,您可以通过如下字段获取它: 但在某些情况下(例如在套接字错误的情况下),您必须执行以下操作: 我想知道是否有标准方法可以涵盖大多数情况? 问题答案: 如果查看内置错误的文档,则会看到大多数类将其第一个参数分配为属性。并非所有人都这样做。 值得注意的是,(与子类和)具有的第一自变量,第二的。没有…大致类似于

  • 我一直在做一个springboot项目,其中需要使用进行配置 <code>应用程序。位于目录下的yml文件。 这是文件的内容: 在配置类中,我为每个字段都有变量。 这是跑步者文件: 尽管应用程序字段中的所有其他变量都是正确的,但其中包含一些与操作系统用户相关的内容。 应为toString- Actualt toString- PS:字母并不意味着它为空。它们已经被填充了! 我已经检查了一些类似的问

  • 我正在编写一个administrator类,我正在编写的所有其他类都要从它继承。在本例中,我希望类继承一个main方法,并且我还计划实现一个工厂。我必须编写一些sysouts,其中包括各种类名,如charcount、linecount等等。为此,我需要能够获得当前的类名,因为这个方法将被多个类继承。在Java中有没有办法做到这一点?您可以在下面找到我要做的sysout示例: 提前谢谢大家,任何帮助

  • 问题内容: 我有用于在Java中创建线程的此类 控制台显示以下文本作为输出 我的代码创建了新线程: 我的问题是:为什么返回正确的线程名却返回另一个? 问题答案: 为什么要返回正确的线程名称而又返回其他? 您的课程,但随后您通过调用以下内容开始: 这是不正确的。这意味着创建的线程实际是 不 一样的。 应该实现而 不是 扩展线程。您的代码可以工作,因为线程也是可运行的。 因为有两个线程对象,所以当您调

  • 我正在寻找关于如何以及何时实现dispose模式的建议。 我已经阅读了MSDN关于如何实现dispose()模式的文章。说得通。我在我的类中实现了它,但它似乎对内存使用没有什么影响。 有点背景,我正在建立一个2D自顶向下的游戏引擎。我有一个名为Gatherer的单元,它继承自Actor(一个用于绘制sprite和跟踪viewplane的基本类),它们是一些简单的sprite。它们在5轮比赛后消失。

  • 问题内容: 我已经尝试通过库成功使用OAuth进行身份验证。 从客户端重定向回后,我发送成功 我发现什么都没有告诉电子邮件部分(为空): 第一个问题 ,如何正确获取电子邮件?无需使用Google+ API。 编辑#2 我尝试将另一个用于: 并尝试使用较新的API检索电子邮件: 但它给 编辑#3 我尝试使用另一个范围: 并尝试使用以下URL检索电子邮件: 但它仍然像以前一样为空。 第二个问题 ,我可