Android Studio 之 ROM【1】, Entity,Dao,Database

Android Studio 之 ROM, Entity,DAO,DataBase

1.Entity 实体类

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  接口

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 抽象类

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 类

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() + "
";

            textView.setText(text);
        }
    }

}

  

原文地址:https://www.cnblogs.com/gfwei/p/11806025.html