使用 Room 实体定义数据

当您使用 Room 持久性库存储应用数据时,可以定义实体来表示要存储的对象。每个实体都对应于关联的 Room 数据库中的一个表,并且实体的每个实例都表示相应表中的一行数据。

使用 Room 实体,您无需编写任何 SQL 代码即可定义数据库架构

实体详解

您可以将每个 Room 实体定义为带有 @Entity 注解的类。Room 实体包含数据库中相应表中的每一列的属性,包括构成主键的一个或多个列。

以下代码是一个实体的示例,该实体定义了一个 User 表,其中包含 ID 列、名字列和姓氏列:

@Entity
data class User(
    @PrimaryKey val id: Int,
    val firstName: String,
    val lastName: String
)

默认情况下,Room 将类名称用作数据库表名称。如果您希望表具有不同的名称,请设置 @Entity 注解的 tableName 属性。同样,Room 默认使用属性名称作为数据库中的列名称。如果您希望列具有不同的名称,请将 @ColumnInfo 注解添加到该属性并设置 name 属性。以下示例展示了表及其所含列的自定义名称:

@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "first_name") val firstName: String,
    @ColumnInfo(name = "last_name") val lastName: String
)