在Android开发中,使用Room框架将数据持久化到本地数据库时,需要定义实体类。实体类是一个包含数据的Java类,它映射到数据库中的一张表。以下是如何定义一个实体类的步骤:
- 定义实体类:创建一个Java类,并使用
@Entity
注解标记它。这个注解告诉Room这个类是一个实体类。
import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity public class User { // ... }
- 定义主键:为实体类定义一个主键字段,并使用
@PrimaryKey
注解标记它。主键是唯一标识表中每一行的字段。
import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity public class User { @PrimaryKey(autoGenerate = true) private int id; // ... }
- 定义字段:在实体类中定义数据库表中的字段。对于每个字段,使用相应的注解来标记它,例如
@ColumnInfo
、@PrimaryKey
、@NonNull
等。
import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity public class User { @PrimaryKey(autoGenerate = true) private int id; @ColumnInfo(name = "name") private String name; @ColumnInfo(name = "age") private int age; // ... }
- 使用数据访问对象(DAO):创建一个接口,该接口继承自
androidx.room.Dao
,并定义访问数据库的方法,例如insert()
、delete()
、update()
和query()
。
import androidx.room.Dao; import androidx.room.Insert; import androidx.room.Query; @Dao public interface UserDao { @Insert void insert(User user); @Delete void delete(User user); @Update void update(User user); @Query("SELECT * FROM User") ListgetAllUsers(); }
- 创建数据库:创建一个抽象类,继承自
androidx.room.Database
,并使用@TypeConverters
注解来定义类型转换器。然后,使用@Database
注解标记这个类,并指定数据库的名称。
import androidx.room.Database; import androidx.room.RoomDatabase; import androidx.room.TypeConverters; @Database(entities = {User.class}, version = 1) @TypeConverters({Converters.class}) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }
现在,你已经定义了一个实体类,并设置了相应的数据访问对象和数据库。