我如何将我的班级变成“房间持久性”中的实体?

时间:2019-06-12 05:56:17

标签: android-room

这是我第一次使用Room Persistence Library,并且在理解实体的概念时遇到困难。

所以我有这两个类:

public class CapturedTime
{

    @SerializedName("startTime")
    @Expose
    private Long startTime;
    @SerializedName("endTime")
    @Expose
    private Long endTime;}

public class CapturedItem implements Parcelable {

private String serialNumber;
private CapturedTime firstCapturedTime;
private CapturedTime secondCapturedTime;}

我相信对于CapturedTime类来说这非常简单,但是我不知道应该为CapturedItem类做什么。我可以仅将CapturedTime变量分成几列,还是应该首先执行一些步骤?

1 个答案:

答案 0 :(得分:0)

首先在buid.gradle文件中添加依赖项

dependencies {
        def room_version = "2.1.0-rc01"

        implementation "androidx.room:room-runtime:$room_version"
        annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
}

之后,使用@Entity注释将普通的POJO类声明为Room持久性库中的实体。

@Entity(tableName = "your_table_name")
public class CapturedTime{
    @SerializedName("startTime")
    @Expose
    @ColumnInfo(name = "start_time")
    private long startTime;
    @SerializedName("endTime")
    @Expose
    @ColumnInfo(name = "end_time")
    private long endTime;
}

@ColumnInfo用于声明表中的列名称,默认情况下,如果不提供@ColumnInfo注释,则列名称为变量名

如果要在房间中存储自定义对象,请使用  @TypeConverters()批注

就您而言,

@TypeConverters(CapturedTime.class)
private CapturedTime firstCapturedTime;

有关更多信息,请访问this