android框架连接mysql_Android:ROOM数据库框架
ROOM
ROOM对Sqlite进行了封装,直接使用ROOM来进行数据库访问。
ROOM数据库查询可以直接返回LiveData对象,每次CRUD都会自动更新该LiveData,LiveData始终是数据库最新值
利用该特性可以直接将数据库的变化,通过LiveData作为观察者传递到ViewModel,保证拿到的数据都是数据库中时刻最新的值
使用流程:
Entry类-->Dao-->EntryRoomDatabase(单例模式)-->Repository(从EntryRoomDatabase获得Dao)-->在Repository中实现异步-->AndroidViewModel通过Repository访问数据库CRUD
数据库操作不应该在MainThread中,所以我们使用AsyncTask来进行数据库操作。
UI层(Activity和Fragment)所有的数据应该都直接从ViewModel来获取,在ViewModel中我们使用AsyncTask来进行数据库操作。
ROOM进行数据库操作依赖于Dao接口,在该接口中实现了很多数据库操作。
主要角色Entry 实体类
Dao 定义接口数据库操作
继承RoomDatabase 通过ROOM实例化database返回Dao供调用
异步类调用Dao中数据库操作如AsyncTask
Repository对操作进行封装
AndroidViewModel 聚合 Repository来执行数据库操作
使用方法
Entry类-->Dao-->EntryRoomDatabase(单例模式)-->Repository(从EntryRoomDatabase获得Dao)-->在Repository中实现异步-->AndroidViewModel通过Repository访问数据库CRUD
代码实现
Entry
@Entity
public class Word {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "english")
private String english;
@ColumnInfo(name = "chinese")
private String mean;
public Word(String english, String mean) {
this.english = english;
this.mean = mean;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEnglish() {
return english;
}
public void setEnglish(String english) {
this.english = english;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
}
Dao
@Dao
public interface WordDao {
@Insert
void insertWord(Word... words);
@Update
void update(Word... words);
@Delete
void delete(Word... words);
@Query("DELETE FROM WORD")
void deleteAll();
@Query("SELECT * FROM WORD ORDER BY ID DESC")
LiveData> getAll();
}
WordRoomDatabase
@Database(entities = {Word.class},version = 1,exportSchema = false)
public abstract class WordRoomDatabase extends RoomDatabase {
public abstract WordDao getWordDao();
private static WordRoomDatabase INSTANCE;
public static WordRoomDatabase getInstance(final Context context) {
if (INSTANCE == null) {
synchronized (WordRoomDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
WordRoomDatabase.class, "word_database")
.build();
}
}
}
return INSTANCE;
}
}
Repository
public class Repository {
private LiveData> wordsLive;
public LiveData> getWordsLive() {
return wordsLive;
}
//用来调用数据库操作
private WordDao wordDao;
public Repository(Context context) {
WordRoomDatabase wordRoomDatabase = WordRoomDatabase.getInstance(context.getApplicationContext());
wordDao = wordRoomDatabase.getWordDao();
wordsLive = wordDao.getAll();
}
public void insert(Word... words){
new InsertTask(wordDao).execute(words);
}
public void delete(Word... words){
new DeleteTask(wordDao).execute(words);
}
public void update(Word... words){
new UpdateTask(wordDao).execute(words);
}
public void deleteAll(){
new DeleteAllTask(wordDao).execute();
}
}
VeiwModel
public class MainViewModel extends AndroidViewModel {
// ViewModel 没有很好的方法来获得一个Context 需要继承AndroidViewModel
Repository repository;
public MainViewModel(Application application) {
super(application);
this.repository = new Repository(application);
}
public LiveData> getAll(){
return repository.getWordsLive();
}
public void insert(Word... words){
repository.insert(words);
}
public void update(Word... words){
repository.update(words);
}
public void delete(Word... words){
repository.delete(words);
}
public void deleteAll(){
repository.deleteAll();
}
}
总结
android框架连接mysql_Android:ROOM数据库框架相关推荐
- Android Studio 连接阿里云数据库【制作基于数据库的多人远程聊天APP】
Android Studio 连接阿里云数据库的简单方法[制作基于数据库的多人远程聊天APP] 首先购买好一个阿里云数据库RDS[我买了一年用了49元] 1.进入官网–>打开右上角的控制台 2. ...
- Android Studio连接云服务器数据库
Android Studio连接云服务器数据库 写在开始 1.Navicat连接云服务器数据库 2.MyEclipse开发服务端servlet的相关步骤 Android Studio端代码编写 写在开 ...
- 使用Spring JDBC框架连接并操作数据库
在前一篇博文JAVA通过JDBC连接并操作MySQL数据库中,我们知道如何通过JDBC连接并操作数据库,但是请看程序,整个程序连接数据库和关闭数据库占了很大一部分代码量,而且每次我们执行一下数据库操作 ...
- greendao连接mysql_Android数据存储框架GreenDao 3.0使用详解
GreenDao 3.0 的使用 1.简介 简单的讲,GreenDao是一个将对象映射到 SQLite数据库中的轻量且快速的 ORM 解决方案.(GreenDaois a light & fa ...
- 如何在 Android 中使用 ObjectBox 数据库框架?
导读 不论是对象映射还是数据集合,Android开发者有太多数据库框架可以选择.ObjectBox数据库这个号称移动端最快的数据库框架,具有超快速.面向对象的API.单元测试即时.线程简单.数据库可自 ...
- Android客户端开发—开源数据库框架LitePal
LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,不使用SQL语句就可以完成创建表以及表单的CRUD操作,并且很轻量级,几乎零配置.(它将 ...
- android 连接mysql orm_Android ORM框架 GreenDao 的使用详解
一.前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储和文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 S ...
- 使用反射+注解封装一个基于Sqlite极简的android数据库框架
数据库 背景 GreenDao 封装 创建数据库 对象映射表 数据库操作 扩展 总结 背景 目前市面上已经有比较好用的数据库框架,比如GreenDao和OrmLite,而且功能也很齐全,那为什么还要多 ...
- Android GreenDao数据库框架
## Android GreenDao数据库框架 GreenDao简介 Android平台的对象关系映射工具(ORM) 为关系型数据库提供面向对象的接口 简化数据库操作 ORM框架 所谓ORM框架,即 ...
最新文章
- 使用Junit4时问题
- 2021年春季学期-信号与系统-第十三次作业参考答案-第七小题
- (电影播放器)MPMoviePlayerController
- 在敏捷中应用测试驱动开发
- 《系统集成项目管理工程师》必背100个知识点-76配置审计
- Qt for Android创建AndroidManifest.xml和Java类文件
- 安装mysql-connector-python-8.0.11-py3.6遇到问题
- 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服
- navigationItem和navigationBar相关性
- 计算机网络配置vlan实验报告,北京理工大学-计算机网络实践-VLAN配置及VLAN间通信实验报告...
- 由西云数据运营的中国第二个AWS区域正式向客户提供服务
- Linux 软件源介绍
- 操作系统之进程通信:高级通信机制四大类
- MATLAB——斜抛运动
- 信息化项目WBS实战总结
- minHash最小哈希
- ARM64内核系统调用详解(基于kernel-4.9)
- mysql安装简书_MySQL 安装和配置
- 第二十课 Django Admin后台管理
- 基于redis库存刷盘类相关业务实现总结
热门文章
- java 类定义_JAVA类与对象(二)----类定义基础
- jpa分页查询_spring data jpa 居然提供了这么多查询方式!
- TeaseR++:快速鲁棒的C++点云配准库介绍+英文版视频教程
- 在Linux部署Nodejs项目,一旦断掉XShell就会导致服务被停掉,真的很郁闷~怎么办?果断用forever
- 异步预热在线视频实现
- JSP和Servlet学习笔记1 - 访问配置
- 057 Insert Interval 插入区间
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34
- 如何用CSS快速布局(一)—— 布局元素详细
- MyEclipse中的快捷键