Jetpackのデータベース-Room

6866 ワード

RoomはJetpackが提供するデータベースフレームワークで、kotlin言語をサポートし、Rxjava呼び出し方式をサポートします.
Room使用
  • 依存
    dependencies {
          def room_version = "2.2.2"
          implementation "androidx.room:room-runtime:$room_version"
          // For Kotlin use kapt instead of annotationProcessor
          annotationProcessor "androidx.room:room-compiler:$room_version" 
        }
    
  • を追加
  • データテーブルに対応するエンティティクラスを定義する
    @Entity(tableName = "videoUpload")
    public class VideoUploadDBModel implements Serializable {
        @NonNull
        @PrimaryKey
        public String uuid;
        public String path;
        public Long size;
        public Integer status;
        public String userId;
    }
    
    @Entity注記
  • を追加する必要があります.
  • データテーブル操作クラス
    @Dao
    interface VideoUploadDao {
        @Insert(onConflict = OnConflictStrategy.REPLACE)
        fun insert(videoUploadDBModel: VideoUploadDBModel)
    
        @Update(onConflict = OnConflictStrategy.REPLACE)
        fun update(videoUploadDBModel: VideoUploadDBModel)
    
        @Query("select * from videoUpload where uuid==:uuid")
        fun query(uuid: String): List<VideoUploadDBModel>
    
        @Query("select * from videoUpload")
        fun queryAll(): List<VideoUploadDBModel>
    
        @Query("delete from videoUpload where uuid==:uuid")
        fun delete(uuid: String)
    }
    
  • を定義する.
  • データベースクラス
    	@Database(entities = [VideoUploadDBModel::class], version = 1)
    	abstract class VideoDatabase : RoomDatabase() {
    	    abstract fun videoUploadDao(): VideoUploadDao
    	}
    
  • を定義する
  • val database = Room.databaseBuilder(mContext, VideoDatabase::class.java, "fcat.db").build()
    val videoUploadList = database.videoUploadDao().queryAll()
    
  • を使用