日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 架构 -- Room

發布時間:2025/4/16 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 架构 -- Room 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 來標明數據庫表的列名, 用 @PrimaryKey 來標示 主鍵@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 + '}';} }

相對應的DAO類:

  • Room也可以返回RxJava2中Publisher和Flowable:
  • import android.arch.persistence.room.Dao; import android.arch.persistence.room.Insert; import android.arch.persistence.room.OnConflictStrategy; import android.arch.persistence.room.Query; import java.util.List;import io.reactivex.Flowable;@Dao public interface UserDao {@Insert(onConflict = OnConflictStrategy.REPLACE)List<Long> insert(User... users);@Query("SELECT * from user")Flowable<List<User>> loadUser();@Deletevoid delete(User user); }

    當準備好所有的 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為時間轉換的類:

  • 如果想要在數據庫中存儲Date,可以存儲等價的Unix時間戳
  • public class Converters {@TypeConverterpublic static Date fromTimestamp(Long value) {return value == null ? null : new Date(value);}@TypeConverterpublic static Long dateToTimestamp(Date date) {return date == null ? null : date.getTime();} }

    Room數據庫數據庫升級:

  • Room使用Migration來實現數據庫的遷移。每個Migration都指定了startVersion和endVersion。
  • import android.app.Application; import android.arch.persistence.db.SupportSQLiteDatabase; import android.arch.persistence.room.Room; import android.arch.persistence.room.migration.Migration;public class AppApplication extends Application {private AppDatabase mAppDatabase;@Overridepublic void onCreate() {super.onCreate();mAppDatabase = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "android_room_dev.db").allowMainThreadQueries().addMigrations(MIGRATION_1_2, MIGRATION_2_3).build();}public AppDatabase getAppDatabase() {return mAppDatabase;}/*** 數據庫版本 1->2 user表格新增了age列*/static final Migration MIGRATION_1_2 = new Migration(1, 2) {@Overridepublic void migrate(SupportSQLiteDatabase database) {database.execSQL("ALTER TABLE User ADD COLUMN age integer");}};/*** 數據庫版本 2->3 新增book表格*/static final Migration MIGRATION_2_3 = new Migration(2, 3) {@Overridepublic void migrate(SupportSQLiteDatabase database) {database.execSQL("CREATE TABLE IF NOT EXISTS `book` (`uid` INTEGER PRIMARY KEY autoincrement, `name` TEXT , `userId` INTEGER, 'time' INTEGER)");}}; }

    操作數據庫:

    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);}});

    總結

    以上是生活随笔為你收集整理的Android 架构 -- Room的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 天天射日日干 | 欧美在线视频一区二区三区 | 午夜激情视频 | 日韩在线中文字幕 | 黄页网站视频 | 欧美手机在线视频 | 久久av一区二区三区亚洲 | 日本视频在线免费观看 | 伊人av综合 | gav成人 | 日韩天堂| 九七电影院97理论片 | 精品91自产拍在线观看二区 | 免费a级大片 | 69xx视频在线观看 | 欧美精品一区二区三区在线播放 | 男女日批视频 | 亚洲精品电影在线 | 十八禁一区二区三区 | 已满十八岁免费观看 | 变态另类丨国产精品 | 加勒比不卡视频 | 潘金莲黄色一级片 | 亚州中文字幕 | 尹人成人 | 久久综合干 | 亚洲婷婷一区 | 国产一级黄色片子 | 欧美色图另类 | 国产精品高潮AV无码 | 日日狠狠 | 友田真希一区二区 | 久久久久久免费毛片精品 | 奇米影视狠狠干 | 色涩av| 91久久久久久久久久久 | chinese国产精品 | yjizz国产| 少妇精品一区 | 麻豆精品久久 | 糖心视频在线 | 99riav3国产精品视频 | 成人乱码一区二区三区 | 亚洲中文字幕第一区 | 国产精品自拍一区 | 日韩黄色一级 | 精品黑人一区二区三区久久 | jvid在线 | 亚洲熟女乱色综合亚洲av | 插插综合视频 | 国产资源精品 | 91在线在线| 诱惑av| 天天综合国产 | 国产美女福利视频 | 亚色图 | 欧美日韩在线播放 | 久久精品网 | 久久一区二区三区四区 | 欧美日韩一级二级 | 黄色片在线视频 | 亚洲熟妇av日韩熟妇在线 | 青青草视频免费播放 | 国产98色在线 | 日韩 | 男人天堂av在线播放 | 精品亚洲永久免费精品 | 永久免费毛片 | 国产情侣免费视频 | 久久久久久久一区二区三区 | 日本黄网站在线观看 | 日韩少妇视频 | 茄子视频懂你更多在线观看 | 国产一级片一区二区 | 国产欧美激情视频 | 国产有码在线 | 狠狠狠狠狠干 | 日韩电影在线一区二区 | www色中色| 波多野结衣a v在线 欧洲免费av | 久久精品2019中文字幕 | 青青草国产在线观看 | 狠狠五月 | 少女忠诚电影高清免费 | 午夜aaa片一区二区专区 | 亚洲福利在线播放 | 92久久 | 一个色的综合 | 尤物av无码色av无码 | 成人av手机在线观看 | 野花视频在线免费观看 | 少妇天天干 | 一级黄色片免费在线观看 | 精品中文字幕在线观看 | 巨胸喷奶水www久久久免费动漫 | 精品人妻无码一区二区三区 | 久久精品视频观看 | 永久免费看黄网站 | 伊人激情网 | 最新福利在线 |