Android官方数据库框架Room简介
程序员文章站
2022-05-14 13:05:54
...
本文参考:使用room将数据保存到本地
Room是什么
Room是Android于2017年推出的官方数据库。Room持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。
它可以在运行应用的设备上创建应用数据的缓存,没有网的时候也可以看这些缓存下来的数据。
Room怎么用
Room包含3个主要组件:
-
数据库:包含数据库持有者,并作为应用已保留的款关系型数据的底层连接的主要接入点。使用@Database注释的类应满足以下条件
- 扩展RoomDatabase的抽象类。
在注释中添加与数据库关联的实体列表。 - 包含具有0个参数且返回使用@Dao注释的类的抽象方法。
在运行时,您可以通过调用Room.databaseBuilder()或
Room. inMemoryDatabaseBuilder()获取Database 的实例。
- 扩展RoomDatabase的抽象类。
- Entity: 表示数据库中的表。
-
DAO:包含用于访问数据库的方法。
使用Room要先声明依赖:
在应用或模块的 build.gradle 文件中添加所需工件的依赖项:
dependencies {
implementation "androidx.room:room-runtime:$room_version"//写代码的有一个库
annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
//注解处理器
// Test helpers
testImplementation "androidx.room:room-testing:$room_version"
implementation 'androidx.recyclerview:recyclerview:1.1.0'
}
接着创建一个Entity的Java类:(以下用word举例)
@Entity
public class Word {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "english_word")
private String word;
@ColumnInfo(name = "chinese_meaning")
private String chinesemeaning;
public Word(String word,String chinesemeaning) {
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;
}
}
然后就可以开始准备Dao(Database access object)了
它是一个接口,里面主要是你想对数据的操作方法:
@Dao //Database access object
public interface WordDao {
@Insert //增加
//void insertWords(Word word);传入一个参数
void insertWords(Word... words);//传入多个参数
@Update
void updateWords(Word... words);
@Delete
void daleteWords(Word... words);
@Query("DELETE FROM WORD")
void deleteAllWords();
@Query("SELECT * FROM WORD ORDER BY ID DESC")
List<Word> getAllWords();
}
这里只举例了一个entity的情况,要是有多个entity,则要写多个Dao。
然后我们用一个继承了RoomDatabase的抽象类WordDatabase来获得Dao中的方法
@Database(entities = {Word.class},version=1,exportSchema = false)
public abstract class WordDatabase extends RoomDatabase {
public abstract WordDao getWordDao();
}
在MainActivity中我们通过
wordDatabase = Room.databaseBuilder(this,WordDatabase.class,"word_database")
.build();
来获得我们建立的数据库的实例。
下一篇: Android开发之Room(Java)
推荐阅读
-
六款值得推荐的android(安卓)开源框架简介
-
EF框架访问access数据库入门(后附官方推荐“驱动”版本)
-
Android Room框架学习笔记
-
Android开源:数据库ORM框架GreenDao数据库查询解析
-
android_Room数据库中的一对多关系
-
如何创建一个可使用的数据库框架项目:Android
-
Android数据库框架-xUtils使用(数据库映射(增删改查))
-
Android以太网框架情景分析之启动简介
-
Android中数据库操作框架(ActiveAndroid、ormlite、greenDAO、DBFlow、Realm)介绍及使用详情
-
Android 数据库操作之:Room 的引入及使用(整理)