如何在Android中使用房间数据库

  介绍

本篇文章为大家展示了如何在Android中使用房间数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>房间是什么?

的房间是一个持久性数据库。

房间持久性库提供了SQLite的抽象层,以便在充分利用SQLite的同时允许流畅的数据库访问。

<强>为什么会选择房间吗?

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

<强>因为房间有下面几个优点:

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

②较少的模板代码

③与LiveData集成

<强>该如何使用它?

1,在app/构建。gradle中添加以下依赖

implementation  & # 39; android.arch.persistence.room:运行时:1.0.0 # 39;   annotationProcessor  & # 39; android.arch.persistence.room:编译器:1.0.0 # 39;

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

2,创建JavaBean

@ entity   public  class  User  {   ,   ,@PrimaryKey (autoGenerate =, true)//主键是否自动增长,默认为假   ,private  int  id;   ,private  String 名称;   ,private  int 年龄;      ,public  int  getId (), {   ,return  id;   ,}      ,public  void  setId (int  id), {=,this.id  id;   ,}      ,public  String  getName (), {   ,return 名称;   ,}      ,public  void  setName (String 名称),{=,this.name 名称;   ,}      ,public  int  getAge (), {   ,return 年龄;   ,}      ,public  void  setAge (int 年龄),{=,this.age 年龄;   ,}   ,//这里的getter/setter方法是必须的   ,//这里的getter/setter方法是必须的   ,//这里的getter/setter方法是必须的   ,//重要的事说三遍   }

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

至少要有一个主键@PrimaryKey

3,创建刀

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

@Dao   public  interface  UserDao  {   ,@Query (“SELECT  *,得到user")   ,List getAllUsers ();      ,@Insert   ,void 插入(用户…,用户);      ,@Update   ,void 更新(用户…,用户);      ,@Delete   ,void 删除(用户…,用户);   }

使用@Dao注解该接口

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

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

@Insert   void 插入(用户…,用户);      @Insert   void 插入(User 用户);      @Insert   void 插入(List

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

@Query (“SELECT  *,得到user")   List

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

@Query (“SELECT  *,得到user  WHERE 年龄=:age")   List

4,创建数据库

@Database (entities =, {, User.class },, version =, 1, exportSchema =,假)   public  abstract  class  UserDatabase  extends  RoomDatabase  {      ,private  static  final  String  DB_NAME =,“UserDatabase.db";   ,private  static  volatile  UserDatabase 实例;      ,static  synchronized  UserDatabase  getInstance (Context 上下文),{   ,if  (instance ==, null), {   instance =,才能创建(上下文);   ,}   ,return 实例;   ,}      ,private  static  UserDatabase 创建(final  Context 上下文),{   ,return  Room.databaseBuilder (   背景下,才能   UserDatabase.class才能,   DB_NAME)才能.build ();   ,}      ,public  abstract  UserDao  getUserDao ();   }

如何在Android中使用房间数据库