Jetpack-Room数据库

本文介绍了Android的Room库,它提供了一个SQLite的抽象层,便于安全地访问数据库。Room的优点包括SQL查询验证、注解减少样板代码、简化迁移。文章详细讲解了设置Room依赖、数据库组件(数据库类、数据实体、DAO)、创建数据库实例以及如何在项目中使用Room的步骤。
摘要由CSDN通过智能技术生成

使用Room将数据保存到本地数据库

简介

Room持久库在SQLite之上提供了一个抽象层,以便在充分利用SQLite的强大功能的同时,能够流畅的访问数据库,具体来说,Room有以下优点:

  • SQL查询的编译时验证
  • 提供方便的注解,能最大减少重复和易错的样板代码
  • 简化了数据库迁移路径

因此建议使用Room,而不是直接操作SQLite API。

设置

build.gradle中,添加以下依赖:

//Kotlin annotation processing tool plugin
apply plugin: 'kotlin-kapt'

dependencies {
    def room_version = "2.4.2"
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
}

主要组件

Room包含了三个主要的组件:

  • 数据库类androidx.room.Database: 此对象持有数据库,并为应用持久化数据的底层连接提供主要的入口。
  • 数据实体Entity: 对应数据库表。
  • 数据访问对象DAO: 一个接口或抽象类,提供数据库的CRUD抽象操作方法,编译时Room会自动生成DAO对应的实现实例。

androidx.room.Database为app提供了关联数据库的DAO实例。因此,app可以使用这些DAO方法从数据库检索数据,以作为关联的数据实体对象的实例。此外,app还可以使用定义的数据实体对关联的表进行插入或更新单行或多行操作。下图展示了Room各组件间的关系:20220330155338.png

示例

本部分展示了真实项目开发中的一个缩影。

项目中新建数据库相关的包

20220330161201.png

  1. dao:存放数据访问对象
  2. database:存放数据库对象
  3. entity: 存放数据表实体

数据实体类

以下代码通过注解@Entity提供了一个数据实体LoginUser,每个LoginUser实例都代表tbl_login_user表中的一行数据。

/**
 * 登录用户
 */
@Entity(tableName = "tbl_login_user")
data class LoginUser(
    @PrimaryKey
    @ColumnInfo(name = "user_id")
    val userId: String,
    //登录名
    @ColumnInfo(name = "login_name")
    val loginName: String?,
    //用于展示的名称
    @ColumnInfo(name = "user_name")
    val userName: String?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值