Room 让数据库变得无比高效简洁 1.一个简单的小例子

导入依赖
def room_version = "2.2.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
implementation 'android.arch.lifecycle:extensions:1.1.1'
// optional - Test helpers
testImplementation "androidx.room:room-testing:$room_version"
写实体类 WordEntity
package com.example.roombasic; import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity public class WordEntity { //(autoGenerate = true) 自动生成数据 @PrimaryKey(autoGenerate = true) private int id; //ColumnInfo注释 @ColumnInfo(name = "english_word") private String word; @ColumnInfo(name = "chinese_meaning") private String chineseMeaning; public WordEntity(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; } @Override public String toString() { return "WordEntity{" + "id=" + id + ", word='" + word + '\'' + ", chineseMeaning='" + chineseMeaning + '\'' + '}'; } }
写dao层接口 WordDao
package com.example.myroombasic; 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 public interface WordDao { @Insert void insertWords(WordEntity...WordEntity); @Update void updateWord(WordEntity...WordEntity); @Delete void deleteWords(WordEntity...WordEntity); //删除全部 数据库名写实体类名就行了 @Query("delete from wordentity") void deleteAllWords(); //查询全部 数据库名写实体类名就行了 @Query("select * from WordEntity order by id desc") List<WordEntity> getAllWords(); }
写数据库创建类,并获取dao层接口 WordDataBase
package com.example.roombasic; import androidx.room.Database; import androidx.room.RoomDatabase; //现在数据库就一个实体所以写一个就行了,这玩意能写多个,现在版本自定义为1 注意是花括号 @Database(entities = {WordEntity.class},version = 1,exportSchema = false) public abstract class WordDataBase extends RoomDatabase { public abstract WordDao getWordDao(); }
main
package com.example.myroombasic; import androidx.appcompat.app.AppCompatActivity; import androidx.room.Room; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.util.List; public class MainActivity extends AppCompatActivity { WordDataBase wordDataBase; WordDao wordDao; TextView textView66; String text; Button buttonInsert,buttonDelete,buttonClear,buttonUpdate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //各个组件的初始化 textView66 = findViewById(R.id.text66); buttonInsert = findViewById(R.id.buttonInsert); buttonClear = findViewById(R.id.buttonClear); buttonUpdate = findViewById(R.id.buttonUpdate); buttonDelete = findViewById(R.id.buttonDelete); //创建数据库 // allowMainThreadQueries强迫在主线程运行 //正常来说是不允许在主线程中运行的 wordDataBase = Room.databaseBuilder(this,WordDataBase.class,"fuck") .allowMainThreadQueries() .build(); wordDao = wordDataBase.getWordDao(); //显示数据库的内容 updateView(); //插入按钮 buttonInsert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { WordEntity wordEntity = new WordEntity("hello", "你好"); WordEntity wordEntity1 = new WordEntity("world", "世界"); wordDao.insertWords(wordEntity,wordEntity1); updateView(); } }); //清空按钮 buttonClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { wordDao.deleteAllWords(); updateView(); } }); //更新按钮 buttonUpdate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { WordEntity wordEntity = new WordEntity("更改id为64的", "更改id为64的"); wordEntity.setId(64); wordDao.updateWord(wordEntity); updateView(); } }); //删除按钮 buttonDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { wordDao.deleteWords(); } }); } //更新视图 void updateView(){ text = ""; List<WordEntity> allWords = wordDao.getAllWords(); for (WordEntity allWord : allWords) { text += allWord.toString() + " "; } textView66.setText(text); } }
写一个ScrollView 把text放到这里,如果text过长的话还能滚动
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/buttonDelete" android:layout_width="219dp" android:layout_height="59dp" android:layout_marginBottom="36dp" android:text="delete" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.181" app:layout_constraintStart_toStartOf="parent" /> <Button android:id="@+id/buttonClear" android:layout_width="219dp" android:layout_height="59dp" android:layout_marginBottom="144dp" android:text="clear" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.118" app:layout_constraintStart_toStartOf="parent" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_begin="754dp" /> <ScrollView android:id="@+id/scrollView2" android:layout_width="546dp" android:layout_height="748dp" app:layout_constraintBottom_toTopOf="@+id/guideline2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0"> <TextView android:id="@+id/text66" android:layout_width="match_parent" android:layout_height="wrap_content"/> </ScrollView> <Button android:id="@+id/buttonInsert" android:layout_width="198dp" android:layout_height="47dp" android:layout_marginBottom="244dp" android:text="insert" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.17" app:layout_constraintStart_toStartOf="parent" /> <Button android:id="@+id/buttonUpdate" android:layout_width="145dp" android:layout_height="89dp" android:layout_marginBottom="200dp" android:text="update" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.923" app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
 
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号