room是jetpack的组件,可以使程序流畅的访问sqlite。
1、依赖的添加
1 | dependencies { |
2、room的使用
1、Entity(表结构)
相当于java web中的实体类。以单词为例,Entity应为:
1 | package com.example.roombasic; |
- 必须在类前使用注解 @Entity 来声明。
- 表结构中必须有一个主键,主键的声明为 @PrimaryKey ,而主键递增则在其后添加 (autoGenerate = true)。
- 列名的注解使用 @ColumnInfo ,可以定义表结构中的列名,如 (name = “english_word”) 。
2、dao
dao是一个接口,只需要写接口即可。
1 | package com.example.roombasic; |
- 同样需要使用注解来声明 @Dao 。
- 每种接口需要使用注解来声明,如@Insert、@Update、@Delete。
- @Query(“select * from word order by id desc”) 是查询语句。
- 接口暂时不需要自己来实现,room已经帮我们写出了具体的代码。
- Word… words 表明可以传进多个参数。类名… 对象名s 代表可以传递多个参数。
3、database
database来获得dao
1 | package com.example.roombasic; |
需要使用注解来声明 @Database(entities = {Word.class},version = 1,exportSchema = false)
- entities = {Word.class}的{}中来填写entity,可添加多个。
- version 是当前数据库版本。
- exportSchema 暂时不知道干什么用,需要写上。
synchronized为java中的锁机制,多线程防止出错。
Room.databaseBuilder(context.getApplicationContext(),WordDatabase.class,”word_database”).build
- 第一个参数是activity,第二个参数为database的映射,第三个参数为数据库名称。