介绍
本篇文章为大家展示了如何在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") ,ListgetAllUsers (); ,@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") List4,创建数据库
@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中使用房间数据库