[Day28] Room | 坑要来了

首先我们建立的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 的关联

Day5 Next.js 介绍 - Production-ready 的 React.js 框架

这系列内容主要内容是在讲如何用 Next.js 取代 WordPress 前端,因此约 70% 内容...

[Day 30] 结算成果!铁人赛真的结束了吗?!

终於~~~ 来到了第30天啦 不管有没有做完,都该来结算一下成果了 来看看目前的专案跟一开始规划的完...

从零开始的8-bit迷宫探险【Level 15】迷人的反派角色-制作怪物

正当山姆思考结界问题的同时,啪嗒!啪嗒!雨落了下来。 「下雨了!」山姆赶紧找寻遮蔽物,跑到了一棵大...

2021最新Canonical终极指南,短短的语法让你的SEO功力倍增提升网站能见度

Canonical 是什麽 图片来源:https://www.samunderwood.co.uk/...

Day21 javascript 阵列方法(完)

今天继续来讲阵列,想说都剩没多少,不如就一次介绍完呗,这样以後翻笔记才不会翻半天还找不到东西(大家应...