Android-Room数据库的使用方法教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android-Room数据库的使用方法教程

Room是一个持久性数据库,提供了SQLite的抽象层,以便在充分利用SQLite的同时允许流畅的数据库访问。这篇文章主要介绍了详细介绍Android-Room数据库的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。

为什么会选择Room?

前面我也说到了现在也有不少开源的数据库给大家使用,那为什么我们还要去学习使用这个库呢?当然不是我前面说的“正不正统”的原因了。

因为Room有下面几个优点:

①SQL查询在编译时就会验证- 在编译时检查每个@Query和@Entity等,这就意味着没有任何运行时错误的风险可能会导致应用程序崩溃(并且它不仅检查语法问题,还会检查是否有该表)

②较少的模板代码

③与LiveData 集成

该如何使用它?

1、在app/build.gradle中添加以下依赖

implementation 'android.arch.persistence.room:runtime:1.0.0'

annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'

你可以点击这里查看最新依赖版本号

2、创建JavaBean

@Entity

public class User {

@PrimaryKey(autoGenerate = true)//主键是否自动增长,默认为false

private int id;

private String name;

private int age;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) { = name;

}

public int getAge() {

return age;

}

public void setAge(int age) { this.age = age;

}

//这里的getter/setter方法是必须的

}

这里需要使用@Entity 来注解该类

至少要有一个主键@PrimaryKey

3、创建Dao

接下来,需要为我们的实体创建DAO。DAO代表数据访问对象,所以它是告诉我们的数据库如何操作数据的一种方式:

@Dao

public interface UserDao {

@Query("SELECT * FROM user")

List getAllUsers();

@Insert

void insert(User... users);

@Update

void update(User... users);

@Delete

void delete(User... users);

}

使用@Dao 注解该接口

@Insert , @Update , @Delete , @Query 代表我们常用的插入、更新、删除、查询数据库操作

@Insert , @Update , @Delete 可以传入多种不同的参数。例如:

@Insert

void insert(User... users);

@Insert

void insert(User user);

@Insert

void insert(List userLists);

同理,@Query 也可以返回多种不同的类型。

@Query("SELECT * FROM user")

List getAllUsers();

@Query("SELECT * FROM user WHERE id=:id")

User getUser(int id);

@Query("SELECT * FROM user")

Cursor getUserCursor();

当然,除了这些我们还可以传入一些限制符进去。例如,

@Query("SELECT * FROM user WHERE age=:age")

List getUsersByAge(int age);

@Query("SELECT * FROM user WHERE age=:age LIMIT :max")

List getUsersByAge(int max, int... age);

4、创建数据库

@Database(entities = { User.class }, version = 1,exportSchema = false)

public abstract class UserDatabase extends RoomDatabase {

private static final String DB_NAME = "UserDatabase.db";

private static volatile UserDatabase instance;

static synchronized UserDatabase getInstance(Context context) {

if (instance == null) {

instance = create(context);

}

return instance;

}

相关文档
最新文档