首先我们建立的UserData.kt
就是我们资料库中每一笔资料的栏位
@Entity
data class UserData(
@PrimaryKey(autoGenerate = true) var uid: Int,
@ColumnInfo(name = "app_name") var name: String?,
@ColumnInfo(name = "account") var account: String?,
@ColumnInfo(name = "password") var password: String?
)
PrimaryKey 代表主键
剩下都是其它栏位
以及新增UserDao.kt
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getAll(): List<UserData>
@Query("SELECT * FROM users WHERE uid IN (:userIds)")
fun loadAllByIds(userIds: IntArray): List<UserData>
@Query("SELECT * FROM users WHERE app_name LIKE :first AND " +
"account LIKE :last LIMIT 1")
fun findByName(first: String, last: String): UserData
@Insert
fun insertAll(vararg users: UserData)
@Delete
fun delete(user: UserData)
}
此interface主要是操作SQL语法
还有许多资料库CRUD方法都写在这
新增Appdatabase.kt
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
@Database(entities = [(UserData::class)], version = 1, exportSchema = false)
abstract class Appdatabase : RoomDatabase() {
companion object {
const val DATABASE_NAME = "123.db"
@Volatile private var instance: Appdatabase? = null
private val LOCK = Any()
operator fun invoke(context: Context)= instance ?: synchronized(LOCK){
instance ?: buildDatabase(context).also { instance = it}
}
private fun buildDatabase(context: Context) = Room.databaseBuilder(context,
Appdatabase::class.java, DATABASE_NAME).build()
}
abstract fun getNotesDao(): UserDao
}
<<: [影片]第27天:英雄指南-5. 新增应用内导航(2)
>>: Laravel 实战经验分享 - Day27 Eloquent 的关联
这系列内容主要内容是在讲如何用 Next.js 取代 WordPress 前端,因此约 70% 内容...
终於~~~ 来到了第30天啦 不管有没有做完,都该来结算一下成果了 来看看目前的专案跟一开始规划的完...
正当山姆思考结界问题的同时,啪嗒!啪嗒!雨落了下来。 「下雨了!」山姆赶紧找寻遮蔽物,跑到了一棵大...
Canonical 是什麽 图片来源:https://www.samunderwood.co.uk/...
今天继续来讲阵列,想说都剩没多少,不如就一次介绍完呗,这样以後翻笔记才不会翻半天还找不到东西(大家应...