- 为什么要使用Room数据库
- Room数据库的基本使用
- Room数据库的升级
简介
Android Jetpack自从成为谷歌官方架构之后,Room数据库逐渐替代了SQLite,GreenDao成为最主流的数据库ORM框架。Room数据不仅简化了SQLlite数据库的使用门槛,还可以结合LiveData使用。
Room是SQLite数据库的抽象。
Room数据库主要包括三个角色
- Entity :表示数据库中的表
- Dao:提供数据库增,删,改,查的方法。
- DataBase:数据持久化存储底层链接的访问入口。
基本使用
- 数据表
定义一张表名为student_table的数据表,使用@Entity注解。主键使用@PrimaryKey修饰,autoGenerate 是否自增。使用@ColumnInfo注解定义字段名,如果不使用注解则默认为实体类的字段名。注意:如果我们在实体类中定义的字段不想存入表中,我们可以使用@Ignore注解修饰该字段。
2 .数据库访问对象Dao
Room数据库使用了APT技术,我们只需要定义接口或抽象类,使用@Dao注解修饰,编译器会自动生成实现类。
我们定义了增,删,改,查的四个方法。其中查询使用了SQL语句,开发者可根据不同的查询条件进行数据筛选。
3 . 数据库类
定义StudentDataBase抽象类并使用@Database注解修饰,指定数据表entity以及版本号等信息。
4 . ViewModel中的增删改查操作。
5 .操作结果
数据库迁移
当在表中新增加一个列字段 height。为了兼容旧版本数据库,需要数据库增量迁移。
- 使用fallbackToDestructiveMigration() 强制迁移,可能会导致数据丢失。
2 .手动迁移。(自动迁移有风险,不推荐使用,本文暂不介绍)
如果迁移数据结构比较复杂,推荐使用手动迁移,使用自定义Migration类来实现。
还不会的同学赶紧学起来吧,感谢您的阅读,欢迎点赞收藏,您的支持就是小编创作的最大动力!