Android Room 数据库最佳入门教程

引言

  • 本文章旨在记录学习Android JetPack库下的Room数据库的使用,不作过于深入原理的讲解,如有问题和建议请留言讨论。

1、Room 库概念及架构示意图

概念

Google的介绍:
  处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的使用场景是缓存相关的数据,这样一来,当设备无法访问网络时,用户仍然可以在离线状态下浏览该内容,
  Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库

  Room 库具有一下优势:

  • 针对 SQL 查询的编译时验证
  • 可最大限度减少重复和容易出错的样板代码的方便注解
  • 简化了数据库迁移路径

架构示意图

在这里插入图片描述

主要组件

Room 包含三个主要组件

  • 数据库类(Room Database),用于保存数据库并作为应用持久性数据底层连接的主要访问点
  • 数据实体(Entities),用于表示应用的数据库中的表
  • 数据访问对象 (Data Access Objects【Dao】),提供您的应用可用于查询、更新、插入和删除数据库中的数据的方法

2、使用(Kotlin版【带注释】)

效果图展示

Android Room数据库操作

附上代码库地址:https://github.com/zqf-dev/ZRoomCode

依赖项添加

  • 在build.gradle(Project)文件下添加版本
ext {
   
    roomVersion = '2.4.2'
}
  • 在build.gradle(app)文件下添加
plugins {
   
	id 'com.android.application'
	id 'kotlin-android'
	// 添加kapt注解处理器
	id 'kotlin-kapt'
}

android {
   
	//排除原子函数模块并防止出现警告
	packagingOptions {
   
		exclude 'META-INF/atomicfu.kotlin_module'
	}
	kotlinOptions {
   
        jvmTarget = "1.8"
    }
}

dependencies{
   
	//ktx
	implementation 'androidx.core:core-ktx:1.7.0'
	// room
	implementation "androidx.room:room-ktx:$rootProject.roomVersion"
	kapt "androidx.room:room-compiler:$rootProject.roomVersion"
	// 展示数据 adapter
    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.7'
}

实体类(Entities)创建

在这里插入图片描述

数据库(Database)创建

*注:exportSchema:是否允许数据库架构将导出到给定的文件夹中【 默认true 】

/**
 * Author: zqf
 * Date: 2022/05/11
 * 数据库创建
 * entities: 实体类
 * version: 数据库初始版本号
 * exportSchema: 是否允许数据库架构将导出到给定的文件夹中【 默认true 】
 *
 */
@Database(entities = [User::class], version = 1, exportSchema = false)
abstract class ZRoomDB : RoomDatabase() {
   

    //创建userDao
    abstract fun userDao(): UserDao
}

数据访问对象 (DAO)创建

/**
 * Author: zqf
 * Date: 2022/05/11
 * 数据访问对象
 */
@Dao
interface UserDao {
   
    // 查询
    @Query("SELECT * FROM loginUser")
    fun queryAllUser(): MutableList<User>

    //根据姓名参数查询
    @Query("SELECT * FROM loginUser WHERE name = :name")
    fun queryFindUser(name: String): User?

    // 添加单条数据
    @Insert
    fun addUser(vararg user: User)

    // 添加批量数据
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun addBatchUser(list: M
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

逆流的剑客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值