安卓-Room,更加方便地操作数据库

通过Room可最大限度减少重复和容易出错的SQL代码

添加依赖

在build.gradle(:app)中进行如下设置

dependencies {
    def room_version = "2.4.3"
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
}
plugins {
    id 'kotlin-kapt'
}

 添加实体类

@Entity
data class User(
    @PrimaryKey(autoGenerate = true) val id: Int,
    @ColumnInfo(name = "name") val name: String
)

@Entity指定一个实体类
@PrimaryKey指定主键(autoGenerate自动增长,赋值时指定为0即可)
@ColumnInfo指定一个列,name为列名 

添加Dao接口

@Dao
interface UserDao
{
    @Insert
    fun insert(user: User)

    @Delete
    fun delete(user: User)

    @Update
    fun update(user: User)

    @Query("SELECT * FROM User")
    fun getAllUser() : List
}

@Insert指定插入方法,插入insert方法参数的实体,也就是user

@Delete指定删除方法,删除delete方法参数的实体,也就是user

@Update指定更新方法,更新update方法参数的实体,也就是user

@Query(编写SQL语句)指定自定义方法,例如查询

添加数据库类

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase()
{
    abstract fun getUserDao() : UserDao
}

@Database指定数据库类(entities指定数据库中的实体,可有多个) 

getUserDao用来获取操作数据库的Dao类,如果有多个表,只需添加 对应的获取Dao方法即可

实例化Database和Dao类

//"User"为数据表名,表不存在时会自动创建
val database = Room.databaseBuilder(applicationContext,AppDatabase::class.java,"User")
.build()
val dao = database.getUserDao()

通过获取到的Dao实例即可操作数据库

(注意:因为数据库操作是耗时操作,所以不允许在主线程中执行)

Runnable {
    dao.insert(User(0, "user1"))
    val userList = dao.getAllUser()
}.run()

你可能感兴趣的:(android)