Room组件的使用

3.5 Room

Room是谷歌官方推出的数据库框架,该框架基于SQLite,通过注解的方式简化了数据库操作

3.5.1 依赖
implementation 'androidx.room:room-runtime:2.2.5'
annotationProcessor 'androidx.room:room-compiler:2.2.5'
3.5.2 Room的使用步骤
  1. 编写数据表对应的实体类,该类添加“@Entity”注解。
  2. 编写数据表对应的持久化类,该类添加“@Dao”注解。
  3. 编写数据表对应的数据库类,该类从RoomDatabase派生而来,并添加“@Database”注解。
  4. 在自定义的Application类中声明数据库的唯一实例。
  5. 在操作数据表的地方获取数据表的持久化对象。

实体类代码

@Entity
public class Person {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private String name;
    private int price; 
    //自动生成setter and getter  tostring
}

DAO层代码

@Dao
public interface PersonDao {
    //这是一个接口,会自动生成实现类
    @Insert
    void insert(Person person);
    @Delete
    void delete();
    @Update
    void update();
    //from后边跟的是对应的实体类名Entity
    @Query("select * from Person")
    List<Person> query();
    //冒号id方法传入的参数
    @Query("select * from Person where id = :id")
    Person getPersonById(int id);
}

数据库类对应代码

//参数分别为:数据库中的表,数据库版本,自动生成建表语句到文档中
//exportSchema = true时需要指定文档的生成路径
@Database(entities = {Person.class}, version = 1, exportSchema = true)
public abstract class MyDatabase extends RoomDatabase {
    public abstract PersonDao getPersonDao();
}

指定文档生成路径,在build.gradle中

defaultConfig {
	   ...
        javaCompileOptions{
            annotationProcessorOptions {
                arguments = ["room.schemaLocation" : "$projectDir/schemas".toString()]
            }
        }
    }

在Application中实例化对象,oncreate中实例化,定义为成员变量

MyDatabase person_table = Room.databaseBuilder(this, MyDatabase.class, "person_table")
 //允许迁移数据库,数据库发生变更时,默认是删除然后重新创建,允许迁移就可以保留之前的数据
                .addMigrations()
                .build();
//获取DAO对象操作数据库
person_table.getPersonDao().insert(new Person());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值