android 使用room

android 使用room

 

需要安装kts

build.gradle.kts 
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.kotlin.android) apply false
    alias(libs.plugins.kotlin.compose) apply false
    // 添加下面一行
    id("com.google.devtools.ksp") version "2.2.21-2.0.4" apply false
}

  模块app下的 

build.gradle.kts文件
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.kotlin.compose)

//    添加下面一行
    id("com.google.devtools.ksp")
}

 

 

dependencies {
    val room_version = "2.8.3"

implementation("androidx.room:room-runtime:$room_version")

// If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
// See Add the KSP plugin to your project
ksp("androidx.room:room-compiler:$room_version")
//
// If this project only uses Java source, use the Java annotationProcessor
// No additional plugins are necessary
// annotationProcessor("androidx.room:room-compiler:$room_version")

// optional - Kotlin Extensions and Coroutines support for Room
implementation("androidx.room:room-ktx:$room_version")
}

user
@Entity
data class User(
    @PrimaryKey val uid: Int,
    @ColumnInfo(name = "first_name") val firstName: String?,
    @ColumnInfo(name = "last_name") val lastName: String?
)

如果ID自增:@PrimaryKey(autoGenerate = true) val uid: Int

 

UserDao

@Dao
interface UserDao {
    @Query("SELECT * FROM user")
    fun getAll(): List<User>

    @Query("SELECT * FROM user WHERE uid IN (:userIds)")
    fun loadAllByIds(userIds: IntArray): List<User>

    @Query("SELECT * FROM user WHERE first_name LIKE :first AND " +
           "last_name LIKE :last LIMIT 1")
    fun findByName(first: String, last: String): User

    @Insert
    fun insertAll(vararg users: User)

    @Delete
    fun delete(user: User)
}

AppDatabase

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

调用

val db = Room.databaseBuilder(
            applicationContext,
            AppDatabase::class.java, "database-name"
        ).build()

val userDao = db.userDao()
val users: List<User> = userDao.getAll()

 

来源:https://developer.android.google.cn/training/data-storage/room?hl=zh-cn

 

posted on 2025-11-05 21:27  少杨  阅读(5)  评论(0)    收藏  举报