我想知道在 Android Room 查询中使用表名时如何避免硬编码。我在 Kotlin
中开发,但老实说,在这个问题上,Java 或 Kotlin 无关紧要。
让我们看看简单的类:
DAO 接口(interface):
@Dao
interface UserDAO {
@Query("SELECT * FROM USER")
fun getAll(): List<User>
}
实体类:
@Entity(tableName = "USER")
class User {
}
可以看到表名“USER”是硬编码在UserDAO中的@Query中的。如何避免这种情况?如何引用@Entity参数tableName?
我想把所有的名字都放在一个地方。
最佳答案
您可以在任何 Util 类中创建一个常量,并且可以像这样在 Entity 和 Dao 类中引用该变量:-
假设在 MainActivity 中有
companion object {
const val TABLE_NAME: String="Cheese"
}
实体类
@Entity(tableName = MainActivity.TABLE_NAME)
和Dao类将是
@Query("SELECT * FROM "+MainActivity.TABLE_NAME)
注意:-这是避免硬编码命名的常用方法,您可以从实体类中获取表名(需要探索):)。
关于android - 如何使用 Android Room 在 DAO 类中正确获取表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49109866/