Android Studio 之 ROM, Entity,DAO,DataBasejava
1.Entity 實體類android
package com.example.roombasic;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class Word {
//實體類
//主鍵,自增加
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name="englist_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 this.chineseMeaning;
}
public void setChineseMeaning(String chineseMeaning) {
this.chineseMeaning = chineseMeaning;
}
}
2.Dao 接口app
package com.example.roombasic;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
@Dao //Database access object
public interface WordDao {
@Insert
void insertWords(Word ... words); //若是隻插入一條記錄,用long返回值,返回id
@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();
}
3.Database 抽象類ide
package com.example.roombasic;
import androidx.room.Database;
import androidx.room.RoomDatabase;
@Database(entities = {Word.class},version = 1,exportSchema = false) //若是有多個實體,再加上逗號後加實體.Class,這裏版本比較重要,每次更新都要改變
public abstract class WordDatabase extends RoomDatabase {
//抽象類
public abstract WordDao getWrodDao();
}
4.MainActity 類ui
package com.example.roombasic;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import java.util.List;
public class MainActivity extends AppCompatActivity {
WordDatabase wordDatabase;
WordDao wordDao;
Button buttonInsert,buttonUpdate,buttonClear,buttonDelete;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wordDatabase = Room.databaseBuilder(this,WordDatabase.class,"word_database").allowMainThreadQueries().build(); //allowMainThreadQueries() 強制容許在主線程運行
wordDao = wordDatabase.getWrodDao();
textView = findViewById(R.id.textView);
buttonInsert = findViewById(R.id.buttonInsert);
buttonUpdate = findViewById(R.id.buttonUpdate);
buttonClear = findViewById(R.id.buttonClear);
buttonDelete = findViewById(R.id.buttonDelete);
buttonInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Word word1 = new Word("Hello","你好");
Word word2 = new Word("World","世界");
wordDao.insertWords(word1,word2);
updateView();
}
});
buttonUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Word word = new Word("English","英語");
word.setId(23); //更新是用主鍵來更新的
wordDao.updateWords(word);
updateView();
}
});
//刪除全部的記錄
buttonClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wordDao.deleteAllWords();
updateView();
}
});
buttonDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Word word = new Word("English","英語");
word.setId(23); //刪除也是用主鍵來更新的
wordDao.deleteWords(word);
updateView();
}
});
}
void updateView(){
List<Word> list = wordDao.getAllWords();
String text="";
textView.setText(text); //先將 textView 清空
for(int i=0;i<list.size();i++){
Word word = list.get(i);
text += word.getId() + ":" + word.getWord() + "=" + word.getChineseMeaning() + "\n";
textView.setText(text);
}
}
}