[android] jetpack Room 持久性庫,數(shù)據(jù)庫操作如此簡單

三個類搞定數(shù)據(jù)操作 @Database、@Entity、@Dao
添加依賴

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
    id 'kotlin-kapt'
}

  def roomVersion = "2.3.0"

    implementation("androidx.room:room-runtime:$roomVersion")
    annotationProcessor("androidx.room:room-compiler:$roomVersion")
    kapt("androidx.room:room-compiler:$roomVersion")

創(chuàng)建實體類 用@Entity注解

@Entity
class Student() {

    //主鍵,自動增長
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0

    @ColumnInfo(name = "name")//可以加別名,優(yōu)先級更高,如果加了就是用別名的名稱
    lateinit var name: String

    @ColumnInfo(name = "age")
    var age: Int = 0

    constructor(name: String,age: Int): this(){
        this.name = name
        this.age = age
    }

}

創(chuàng)建訪問數(shù)據(jù)庫的接口類 使用@Dao注解

@Dao
interface StudentDao {

    //vararg 可變參數(shù)
    //void a(Student... args) vs vararg students: Student
    @Insert
    fun insertStudents(vararg students: Student)

    @Update
    fun updateStudents(vararg students: Student)

    //刪除全部
    @Query("DELETE FROM student")
    fun deleteAllStudents()

    //刪除
    @Delete
    fun deleteStudents(vararg students: Student)

    @Query("SELECT * FROM student ORDER BY ID DESC")
    fun queryAllStudents(): List<Student>
}

數(shù)據(jù)庫 增刪改查操作,使用@Database注解


@Database(entities = [Student::class], version = 1)
abstract class StudentDatabase: RoomDatabase() {

    abstract fun getStudentDao() : StudentDao


    companion object{

        private var INSTANCE : StudentDatabase? = null
        // Application 這個函數(shù)給Application 用
        fun getDatabase(context: Context): StudentDatabase?{
            if(INSTANCE == null){
                INSTANCE = Room.databaseBuilder(context,StudentDatabase::class.java,"student_database.db")
                    .allowMainThreadQueries()//允許在主線程運行
                    .build()
            }
            return INSTANCE
        }
        //項目中使用這個方法
        fun getDatabase(): StudentDatabase? = INSTANCE

    }

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容