基础使用
实体类
@Entity
public class Word {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "english")
private String word;
private String chinese;
//构造方法与setter、getter以省略
}
创造对应数据库的实体类,用Entity修饰类,设置主键,可以自定义列名。
数据库配置
@Database(entities = {Word.class}, version = 1, exportSchema = false)
public abstract class WordDataBase extends RoomDatabase {
public abstract WordDao getWordDao();
}
配置当前连接数据库所用的信息,依据实体类创建数据库
注意使用抽象实现
Dao类
@Dao
public interface WordDao {
@Insert
void addWords(Word ... words);
@Update
void updateWords(Word ... words);
@Delete
void deleteWords(Word ... words);
@Query("DELETE FROM WORD")
void deleteAllWords();
@Query("SELECT * FROM WORD ORDER BY ID DESC")
List<Word> getAllWords();
}
测试
WordDataBase wordDataBase = Room.databaseBuilder(this, WordDataBase.class, "word_database")
.allowMainThreadQueries() //数据库操作不允许主线程进行,此处方便测试暂时用主线程
.build();
WordDao wordDao = wordDataBase.getWordDao();
上述操作最终获取数据库操作对象Dao
insert = findViewById(R.id.insert);
insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
wordDao.addWords(new Word("add", "加"), new Word("delete", "删除"));
}
});
后续操作直接用Dao调用方法即可完成对数据库的操作。