📜  Android中Room Persistent Library介绍(1)

📅  最后修改于: 2023-12-03 15:13:22.421000             🧑  作者: Mango

Android中Room Persistent Library介绍

什么是Room Persistent Library?

Room是谷歌推出的一款基于SQLite的ORM框架,使用它可以帮助我们更加便捷地访问SQLite数据库。

Room有哪些优点?
  • Room可以帮助我们更加简便地进行数据库访问;
  • Room提供了编译时检查和更好的性能表现;
  • Room可以通过自动生成代码来减少我们写代码的工作量;
  • Room支持RxJava和LiveData,从而更好地支持响应式编程。
Room怎样使用?
1. 添加依赖

在项目的build.gradle文件中,添加如下依赖:

implementation "android.arch.persistence.room:runtime:2.3.0"
annotationProcessor "android.arch.persistence.room:compiler:2.3.0"
2. 创建Entity

Entity是Room中与数据库表对应的类,可以通过@Entity注解来创建一个Entity。

@Entity(tableName = "person")
public class Person {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private String name;

    // getter and setter
}
3. 创建Dao

Dao(Data Access Object)是Room中用来定义各种数据库访问方法的接口,也需要使用注解来生成具体的实现类。

@Dao
public interface PersonDao {
    @Query("SELECT * FROM person")
    List<Person> getAll();

    @Insert
    void insertAll(Person... persons);

    @Delete
    void delete(Person person);
}
4. 创建Database

Database是Room中与数据库的连接,需要继承RoomDatabase类,并在类中声明一个或多个用于获取Dao实例的抽象方法。

@Database(entities = {Person.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract PersonDao personDao();
}
5. 初始化Database

在Application或者其他入口处,通过调用Room.databaseBuilder()的方式来初始化一个Database实例。

AppDatabase db = Room.databaseBuilder(getApplicationContext(),
        AppDatabase.class, "database-name").build();
6. 使用Database

通过获取Database实例,然后再通过Dao的相关方法,即可完成数据库的访问操作。

PersonDao personDao = db.personDao();
List<Person> persons = personDao.getAll();
Room中的部分注解说明
  • @Entity:用于标识数据库表;
  • @PrimaryKey:用于标识主键;
  • @ColumnInfo:用于标识数据库表中字段的名字;
  • @Dao:用于标识Dao接口;
  • @Query:用于执行自定义的Sql语句;
  • @Insert:用于插入数据;
  • @Update:用于更新数据;
  • @Delete:用于删除数据。
参考链接