使用room所需依赖:网址:链接
Room的使用,通过注解的方式可以简化SQLite的操作。
第一步,创建一个bean类。这个bean类表示就是表首行。
注意:成员变量一点要设置set,get方法,不然room会报错
@Entity
public class Word {
@PrimaryKey(autoGenerate = true)//标记为主键。表示让它自动生成
private int id;
@ColumnInfo(name="english_word")//给各名称方便记忆。如果不写也会默认是变量名
private String word;
@ColumnInfo(name="chinese_meaning")
private String chineseMeaning;
public Word(String word, String chineseMeaning) {
this.word = word;
this.chineseMeaning = chineseMeaning;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public String getChineseMeaning() {
return chineseMeaning;
}
public void setChineseMeaning(String chineseMeaning) {
this.chineseMeaning = chineseMeaning;
}
}
第二步,写一个抽象类,这个抽象类是获得数据库对象。
version代表版本,例如:当数据库的表发生变动,比如表列的增加,就要提示版本号…
@Database(entities = {Word.class},version = 1,exportSchema = false)
public abstract class WordDatabase extends RoomDatabase {
public abstract WordDao getWordDao();
}
第三步,写一个接口或抽象类继承Dao。
@Dao //Database access object
public interface WordDao {
@Insert
void insertWords(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();
}
java:
WordDatabase wordDatabase;
WordDao wordDao;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room_basic);
textView=findViewById(R.id.tv_main);
wordDatabase= Room.databaseBuilder(this, WordDatabase.class, "word database")
.allowMainThreadQueries()//允许在主线程执行。如果没有这行会报错。
.build();
wordDao=wordDatabase.getWordDao();
}
private void updateView(){
List<Word> list=wordDao.getAllWords();
String text="";
for(int i=0;i<list.size();i++){
Word word=list.get(i);
text +=word.getId()+":"+word.getWord()+"+"+word.getChineseMeaning()+"\n";
}
textView.setText(text);
}
public void insert(View view){
Word word=new Word("Hello","你好");
Word word1=new Word("World", "世界");
wordDao.insertWords(word,word1);
updateView();
}
public void update(View view) {
Word word = new Word("Hi", "嗨");
word.setId(45);
wordDao.updateWords(word);
updateView();
}
public void delete(View view){
Word word=new Word("Hi", "嗨");
word.setId(46);
wordDao.deleteWords(word);
updateView();
}
public void clear(View view){
wordDao.deleteAllWords();
updateView();
}