Android Jetpack(五):ROOM

目录

  1. ROOM是什么
  2. 为什么出现呢?
  3. 如何使用呢?
  4. 项目中如何使用呢?
  5. 数据库迁移

一、ROOM是什么

Jetpack中的一门技术,Room 是 Google 推出的一个在 SQLite 上提供抽象层的持久存储库。使用ROOM我们可以快速的生成数据库,表,可以快速的去访问。
涉及到的知识点:Entity,Dao,Database,Migration,Repository。

**Entity:**这是一个Model类,对应于数据库中的一张表。Entity类是Sqlite表结构在Java类的映射。

**Dao:**数据访问对象,我们可以通过它来增删改查,每一张表对应一个Dao。

Database:

Migration:

Repository:

二、为什么出现呢?

流畅地访问 SQLite 数据库。

三、如何使用呢?

1.增加插件:由于 Room框架中使用了注解处理器,因此需要使用 kapt 依赖,需要在 build.gradle 文件中引入 kapt 插件。

id 'kotlin-kapt'

2.引入依赖

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.jetbrains.kotlin.android)
    id("kotlin-kapt")
}

dependencies {
	 implementation "androidx.room:room-runtime:2.3.0"
	 kapt "androidx.room:room-compiler:2.3.0"
 }

3.创建一个关于用户的Entity,即创建一张用户表。

(1)Entity

@Entity(tableName = "user")
data class UserEntity(
    @PrimaryKey(autoGenerate = true)
    var id: Int?,
    @ColumnInfo
    var account:String,
    @ColumnInfo
    var nickname:String
)
如果不想传递id?

(2)Dao

@Dao
interface UserDao {
   
   
    @Query("select * from user")
    fun getAll():List<UserEntity>

    @Insert
    fun insertUser(userEntity: UserEntity)

    @Query("select * from user where account=:account")
    fun getInfoByAct(account:String):List<UserEntity>
}

(3)DataBase:为什么要搞抽象的呢?【因为我们只是定义信息,实例化是由ROOM来实现的。】
这是一个数据库,需要协助数据库的版本号,有哪些数据表.

注意,数据库对象不推荐一直创建的,消耗资源,所以我们需要做成单例的。

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

    companion object{
   
   
        private var instance:MyDataBase?=null //可空类型 在Kotlin中,默认情况下,所有基本数据类型(如 Int, Double 等)都是非空的

        fun getInstance(context:Context):MyDataBase{
   
   
            if (instance==null) {
   
   
                 Room.inMemoryDatabaseBuilder(context,MyDataBase::class.java)
                    .build()<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前期后期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值