Android 架构 -- Room
生活随笔
收集整理的這篇文章主要介紹了
Android 架构 -- Room
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
gradle依賴:
// add for room implementation "android.arch.persistence.room:runtime:1.1.1" // room 配合 RxJava implementation "android.arch.persistence.room:rxjava2:1.1.1" annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'// RxJava implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'io.reactivex.rxjava2:rxjava:2.1.3'model對象:
import android.arch.persistence.room.Entity; import android.arch.persistence.room.PrimaryKey;@Entity public class User {// 用 @ColumnInfo 來標(biāo)明數(shù)據(jù)庫表的列名, 用 @PrimaryKey 來標(biāo)示 主鍵@PrimaryKey(autoGenerate = true)private long uid;private String name;private String address;private String phone;private Integer age;public long getUid() {return uid;}public void setUid(long uid) {this.uid = uid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" + "uid=" + uid + ", name='" + name + '\'' + ", address='" + address + '\'' + ", phone='" + phone + '\'' + ", age=" +age + '}';} }相對應(yīng)的DAO類:
當(dāng)準(zhǔn)備好所有的 Model 和 DAO 后,我們就需要把它放入 DataBase 的管理中:
package com.soyoungboy.room.database;import android.arch.persistence.room.Database; import android.arch.persistence.room.RoomDatabase; import android.arch.persistence.room.TypeConverters;import com.soyoungboy.room.database.daos.BookDao; import com.soyoungboy.room.database.daos.UserDao; import com.soyoungboy.room.database.entities.Book; import com.soyoungboy.room.database.entities.User;@Database(entities = {User.class, Book.class}, version = 3) @TypeConverters({Converters.class}) public abstract class AppDatabase extends RoomDatabase {public abstract UserDao userDao();public abstract BookDao bookDao();}Converters.java為時間轉(zhuǎn)換的類:
Room數(shù)據(jù)庫數(shù)據(jù)庫升級:
操作數(shù)據(jù)庫:
1,首先獲取AppDatabase對象:
AppDatabase mAppDatabase = ((AppApplication)getApplication()).getAppDatabase();2,新增操作:
User user = new User();user.setPhone("18320770932");user.setAddress("深圳");user.setName("soyoungboy");// user.setAge("28");List<Long> ids = mAppDatabase.userDao().insert(user);3,查詢操作:
mAppDatabase.userDao().loadUser().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<List<User>>() {@Overridepublic void accept(List<User> entities) {if (entities != null) {for (User user : entities) {Log.d("soyoungboy", user.toString());}}}});4,刪除操作:
findViewById(R.id.button_delete_user).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {User user = new User();user.setPhone("18320770932");user.setAddress("深圳");user.setName("soyoungboy");user.setUid(5);UserDao userDao = mAppDatabase.userDao();userDao.delete(user);}});總結(jié)
以上是生活随笔為你收集整理的Android 架构 -- Room的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10分钟理解CSS3 FlexBox
- 下一篇: FFmpeg 源码学习(一):avfor