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() + "\n"; textView.setText(text);
}
} }

  

Android Studio 之 ROM【1】, Entity,Dao,Database的更多相关文章

  1. Android Studio 之 ROM【3】,LiveData+ViewModel+AsyncTask+Repository+RecyclerView

    教程地址:https://www.bilibili.com/video/av65180549 源码地址:https://github.com/longway777/Android-2019-Tutor ...

  2. Android Studio 之 ROM【2】, LiveData+ViewModel+AsyncTask+Repository

    改造上一节 ROM[1], 1.利用 LiveData<List<Word>> 与 observe 中的 onChanged 配合,删除掉之前的textView更新函数(upd ...

  3. [转]Android Studio SQLite Database Multiple Tables Example

    本文转自:http://instinctcoder.com/android-studio-sqlite-database-multiple-tables-example/ BY TAN WOON HO ...

  4. [转]Android Studio SQLite Database Example

    本文转自:http://instinctcoder.com/android-studio-sqlite-database-example/ BY TAN WOON HOW · PUBLISHED AP ...

  5. Android GreenDao with Android Studio IDE

    转:http://blog.surecase.eu/using-greendao-with-android-studio-ide/ In this tutorial we will show you ...

  6. how to use greendao in android studio

    http://www.arjunsk.com/android/use-greendao-android-studio/ 1.新建一个java文件MainGenerator.java: import d ...

  7. Android Studio配置GreenDAO 3.2.0和使用方法

    我相信,在平时的开发过程中,大家一定会或多或少地接触到SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写SQL语句与解析查询结果等.所以,适用于Android ORM框架也就孕育而生了 ...

  8. [Android Studio]SQLScout插件安装破解

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5972138.html [Android Studio]SQLS ...

  9. Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

    前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} ...

随机推荐

  1. VMWare 下安装 Windows XP

    准备工作 安装VMware 我这里安装的是 VMware-workstation-full-12.1.1-3770994.exe 下载Windows XP with SP3 从网上下载的MSDN版本X ...

  2. C语言语法教程-链表

    链表是一群结构体(称为结点)通过指针连起来.这种结构体类型,比较特殊,叫自引用结构体类型.它有一个指针指向和和结构体一样的类型,其余是数据成员. 头指针指向第一结点,尾指针一定要用空表示,这叫有头有尾 ...

  3. Web API 2 的操作结果

    这是msdn原文文档!明天用,留存. Web API 控制器操作可以返回以下任何内容: void HttpResponseMessage IHttpActionResult 其他类型 根据返回的这种情 ...

  4. HighChat动态绑定数据 数据后台绑定(三)

    今天看了几位大佬的博客,学到了一些,现在分享一下,也作为以后的参考 不多说看代码 1.后台代码 public ActionResult Ajax2() { ReportData reportData ...

  5. php7.3升级后CI框架session失效session不能读取的问题

    php7.3升级后CI框架session失效session不能读取的问题 框架ci3.0.2,php服务器从5升级到7.x后发现session失效了ci无法设置session的问题根本原因在,libr ...

  6. android 调试崩溃Unable to instantiate application的解决方法

    E/AndroidRuntime: FATAL EXCEPTION: main                   Process: com.***.plants, PID: 23100        ...

  7. Python的变量命名规则

    1.只能用大小写字母与“_”(下划线) 2.数字不能用在开头,如:12tea 3.不能使用空格 4.C语言的变量命名规则如上相同

  8. (原+修改)ubuntu上离线安装pytorch

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/12000809.html 参考网址: https://blog.csdn.net/qq_4193655 ...

  9. (原)Ubuntu连接远程服务器时connection reset by peer

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/11086935.html 最近使用ubuntu通过ssh连接服务器时,由于密码错误,多次连接失败后,在 ...

  10. javascript之BOM对象(二location对象)

    一.location对象提供和当前加载的文档相关的信息还有一些导航功能.location对象是window对象的属性,同时也是document对象的属性.window.location和documen ...