首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android的room数据库使用小结(kotlin)

Room是Google官方推荐使用的数据库,相比较某些优秀数据库框架来说,不用过于担心某天库会停止维护,且访问数据库非常流畅,并且提供了与常规的ORM框架一样,通过添加编译期注解来进行表和字段的配置,譬如...总而言之, Room功能强大,速度和稳定性不弱,还简单易用,算得上是一个优秀的数据库。 这里总结下使用room数据库的过程和遇到的问题,以及如何稳定的进行数据库的迁移和升级。...代码以kotlin为例,java也类似差不多的。...:1.1.1" kapt "android.arch.persistence.room:compiler:1.1.1" 需要注意的是,使用的是kotlin,annotationProcessor...第三步,添加room数据库并封装个单例操作类, //AppDb.kt package com.xxx.xx.room import android.arch.persistence.room.Database

3.3K50

【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库 ( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 )

; plugins { id 'com.android.application' } 如果使用 Kotlin 语言开发 , 需要在 android 插件 的基础上 额外导入 kotlin 和...插件 , 和 Kotlin 注解插件 ; 如果使用 Java 语言开发 , 则不需要导入这两个插件 ; id 'org.jetbrains.kotlin.android' id 'kotlin-kapt...' 导入 Room 依赖库 和 编译时生成代码的 注解处理器 ; // 导入 Room 依赖库 implementation 'androidx.room:room-runtime:2.2.5...import androidx.room.Ignore import androidx.room.PrimaryKey /** * 定义数据库表 Entity 实体 / 同时定义数据库表 和 对鹰的实体类...* 设置该数据类对应数据库中的一张数据表, 表名为 student * 该数据库表中的数据对应一个 Student 类实例对象 */ @Entity(tableName = "student")

48330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

    ( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 ) 中 , 实现了 使用 Room 框架访问 Android 中的 SQLite 数据库的操作...插件 和 Kotlin 注解插件 ; plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' } 导入 Room 依赖库..., 注意这是 Kotlin 版本需要导入的依赖库 , 如果是 Java 版本 , 需要导入另外的注解处理器 ; // 导入 Room 依赖库 implementation 'androidx.room...Entity 实体 / 同时定义数据库表 和 对鹰的实体类 * 设置该数据类对应数据库中的一张数据表, 表名为 student * 该数据库表中的数据对应一个 Student 类实例对象 */...获取 Dao 数据库访问对象的抽象方法 , 以及 将该抽象类设置成 单例类 , 在单例对象初始化时创建数据库 ; 完整代码 : package kim.hsl.rvl import android.content.Context

    1K20

    Android Dev Summit 21 精彩内容盘点

    开发者可以使用新增的 getDistance() 和 onPullDistance() API 来控制 OverScoll 的强度,当然你也可以通过 XML 中设置 android:overScrollMode...需要注意,如果你的项目中通过 android:windowBackground 或者 CustomActivity 的方式自定义了开屏页,则需要进行适配,避免在 Android12 中出现两次开屏 Foreground...当数据库表结构发生变化时,需要通过数据库迁移保证数据的不丢失,例如字段名变化之类的变更,需要手写 SQL 才能完成升级,而基于 Auto Migrations 可以检测出两个表结构的区别,完成自动升级。...视图,可以监控每一帧的耗时情况,更好地调试和发现 Jank 一类的问题。...此外,Android Studio 对模拟器进行了不少强化,模拟器模拟更多真实设备的使用场景,例如重力感应等。

    1.7K20

    kotlin--综合运用Hilt、Paging3、Flow、Room、Retrofit、Coil等实现MVVM架构

    前面我们使用Java来运用JetPack中的一系列组件,又使用kotlin运用这些组件实现了一系列功能: kotlin--Flow文件下载 kotlin--Flow结合Room运用 kotlin--Flow...Jason老师的辛勤付出,动脑学院在B站上也有投稿koltin基础的视频,通过视频可以快速学习和上手kotlin 今天来综合使用各种组件,搭建最新MVVM项目框架,利用Paging3实现列表功能,Paging3...1.根据接口和接口返回的json数据,分别创建API和实体类 api地址:ikds.do?...1.Room相关基类 使用Room数据库,首先创建Entity,这边加了一个页码的字段: @Entity data class MovieEntity( @PrimaryKey val...,为RecyclerView添加设置Adapter和liveData的扩展函数: fun RecyclerView.setPagingAdapter

    3.6K31

    Android Jetpack架构组件(一)与AndroidX

    Data Binding(数据绑定):属于支持库可使用声明式将布局中的界面组件绑定到应用中的数据源 Lifecycles:管理 Activity 和 Fragment 生命周期 LiveData:是一个可观察的数据持有者类...存储区是唯一依赖于其他多个类的类,在本例中存储区依赖于持久性数据模型和远程后端数据源。并且,这些架构组件既可以配合使用,也可以单独使用,可以根据需要合理选择。...检测:从AndroidStudio中快速检测基于Kotlin或Java的代码。 -多Dex处理:为具有多个Dex文件应用提供支持。 安全:安全的读写加密文件和共享偏好设置。...Preferences(偏好设置):提供了能够改变应用的功能和行为能力。 Sharing(共享):提供适合应用操作栏的共享操作。 Slices(切片):创建可在应用外部显示应用数据的灵活界面元素。...2.4 UI(界面组件) 界面组件主要提供各种辅助绘制界面的View类 和各种辅助组件,具体包含。 Animation & Transitions(动画):提供各类内置动画以及自定义动画效果。

    2.1K00

    一起看 IO | Jetpack 组件的新特性

    数据持久化 Room 是我们推荐的数据持久化层,它在 SQLite 之上提供了一个抽象层,从而提高了平台的可用性和安全性。...Room 2.4 还内建了对枚举和 RxJava3 的支持,同时也全面支持 Kotlin 1.6。 我们从 Room 2.5 开始使用 Kotlin 对整个库进行重写。...所有的 Navigation 组件现已使用 Kotlin 重写,并使用泛型改进了类的可空性,例如 NavType 的子类。...Baseline Profiles 允许应用和库向 Android 运行时提供有关代码路径使用情况的元数据,从而确定提前编译的优先级。...自定义区域选择 目前已支持低至 API Level 14。该功能支持跨应用手动持久化区域设置,并且可以通过 Service 的 metadata 标签支持自动持久化。

    3.2K20

    开源 | 携程机票跨端 Kotlin DSL 数据库框架 SQLlin

    MMKV-Kotlin 的研发过程和一些常见问题。...例如,在 Android 开发中,我们有 Android Framework SQLite Java API,但是开发者们通常会在项目中使用 Jetpack Room 来操作数据库。...在 KSP 诞生之前,开发者通常使用 KAPT 来进行注解处理和代码生成,但其二者处理 Kotlin 的阶段不同,如下图所示: Kotlin 的编译大概分为两个阶段,第一个阶段由编译器前端进行,它将...由于目前我们是本地编译发布,而 Kotlin 当前不支持类 Unix 系统和 Windows 系统的交差编译,因此 SQLlin 暂时还不支持 Windows 平台。...App KMM 跨端 KV 存储库 MMKV-Kotlin》 Jetpack Room:https://developer.android.com/training/data-storage/room

    1.7K40

    上手使用 Room Kotlin API

    developer.android.google.cn/codelabs/android-room-with-a-view-kotlin#0 定义数据库表 在我们的数据库中仅有一个表,就是保存词汇的表。...Word 类代表表中的一条记录,并且它需要使用注解 @Entity。我们使用 @PrimaryKey 注解为表定义主键。然后,Room 会生成一个 SQLite 表,表名和类名相同。...每个类的成员对应表中的列。列名和类型与类中每个字段的名称和类型一致。如果您希望改变列名而不使用类中的变量名称作为列名,可以通过 @ColumnInfo 注解来修改。...操作数据库属于比较耗时的 I/O 操作,所以需要在后台线程中完成。我们将把 Room 与 Kotlin 协程和 Flow 相结合来实现上述功能。...同数据插入调用一样,这里的分发器来自构建数据库时您所提供的执行器,或者来自默认使用的 Architecture Components IO 执行器。

    1.6K10

    【Jetpack】ORM 数据库访问框架 Room 简介 ( 对象关系映射 ORM 概念简介 | Room 框架的组成部分 - 实体、数据库访问对象、数据库持有者 | Room 框架使用步骤 )

    "androidx.room:room-compiler:$room_version" // 可选配置项 - 支持 Kotlin 扩展和协程的 Room 框架 如果使用的是 Kotlin 语言必须导入该依赖...Entity 注解:用于标记实体类,指定实体类对应的数据库表的名称和字段信息等。 Dao 数据库访问对象:用于定义访问数据库的方法,例如查询、插入和删除等操作。...TypeConverters 注解:用于标记类型转换器类,将特定类型的数据转换为数据库中的原生类型。...; Dao 数据库访问对象实现类 , 用于执行 SQL 查询和操作 ; 实体类 Entity 的映射器 , 用于将数据库中的数据映射到实体类中 ; androidx.room:room-ktx 依赖库..., 提供了 Kotlin 扩展功能 , 如果使用的是 Kotlin 语言 , 则必须导入该依赖库 ; 2、创建 Entity 实体类 创建 Entity 实体类 , 该实体类对应着数据库中的一张表 ,

    1.7K20

    AndroidStudio 开发基础知识【翻译完成】

    二十八、使用安卓手势检测器类检测常见手势 二十九、在安卓上实现自定义手势识别 三十、安卓片段介绍 三十一、在 AndroidStudio 使用片段——一个例子 三十二、现代安卓应用架构和 Jetpack...持久化库 六十七、安卓表格布局和表格行教程 六十八、安卓 Room 数据库和仓库教程 六十九、使用安卓存储访问框架访问云存储 七十、安卓存储访问框架示例 七十一、使用视频视图和媒体控制器类在安卓系统上播放视频...AndroidStudio 应用 八、AndroidStudio 代码编辑器基础 九、安卓架构概述 十、安卓应用的剖析 十一、Kotlin 简介 十二、Kotlin 数据类型、变量和可空性 十三、Kotlin...三十四、安卓触控和多点触控事件处理 三十五、使用安卓手势检测器类检测常见手势 三十六、在安卓上实现自定义手势识别 三十七、安卓片段介绍 三十八、在 AndroidStudio 使用片段——一个例子 三十九...七十二、安卓 SQLite 数据库概述 七十三、安卓 Room 持久化库 七十四、安卓表格布局和表格行教程 七十五、安卓 Room 数据库和仓库教程 七十六、使用安卓存储访问框架访问云存储 七十七、安卓存储访问框架示例

    3.2K30

    是时候更新手里的武器了—Jetpack架构组件简析

    重要的是,我们可以自定义这个适配器了,也就是布局里面的属性我们可以随便定义它的名字和作用。来个?...同样的,Lifecycle也支持自定义生命周期,只要继承LifecycleOwner即可,然后通过markState方法设定自己类的生命周期,举个?...这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。 ” LiveData 是一种可观察的数据存储器类。等等,这个介绍好像似曾相识?...下面我就结合Room说说Paging的用法。使用Paging主要注意两个类:PagedList和PagedListAdapter。...官方文档 Demo代码地址 ViewModel “ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。

    2.9K20

    Android Jetpack - Room

    然后,在设备重新联机后,任何用户启动的内容更改都会同步到服务器 Room 的三个主要部分包括 Database 包含数据库持有者,并作为应用程序的持久关系数据的基础连接的主要访问点。...使用@Database注释的类应满足以下条件: 继承了 RoomDatabase 的抽象类 在注解中包含与数据库相关联的实体类列表 包含一个无参抽象方法,并返回使用 @Dao 注释的类。...然后,应用程序使用每个 DAO 从数据库中获取实体,并将对这些实体的任何更改保存回数据库。最后,应用程序使用实体来获取和设置与数据库中的表列对应的值 Room 组件关系图 ?...Repository 类抽象出对多个数据源的访问。存储库不是体系结构组件库的一部分,但是建议的代码分离和体系结构的最佳实践。...://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin https://developer.android.com

    1.9K70

    5年Android 开发要具备哪些知识和技能?

    作为一名有5年以上经验的Android开发工程师,你应该具备以下知识和技能: 1. 基础知识 Java/Kotlin语言: 掌握至少一种主要的Android开发语言,Java或Kotlin。...Android SDK: 熟悉Android SDK中的核心类和库。 数据结构和算法: 了解常用的数据结构和算法,能够进行有效的代码优化。 2....设计模式: 熟悉常用的设计模式,如单例、工厂、观察者等。 3. UI/UX 布局和控件: 熟练使用各种布局和控件,自定义控件。 动画: 能够实现复杂的动画效果。...数据存储 SQLite: 熟练使用SQLite数据库进行数据存储。 Room: 了解Room Persistence Library。...NoSQL数据库: 了解如Firebase Firestore的使用。 6. 多线程和并发 线程和线程池: 理解线程的生命周期,能够使用线程池进行并发操作。

    42710

    Android Jetpack 更新一览

    该库的一些最新改进解决了常见的功能需求,包括支持调整曝光补偿和访问有关摄像头状态和功能的更详细信息。此外,现在可以在摄像头运行时通过 Camera2Interop 改变摄像头设置,如 FPS 范围。...例如,您可以将一个消息 (Message) 建模为一个模式类型,其中包括主题、正文和发件人等数据。 使用构建器来创建模式类型的文件,然后将它们添加到存储中。...△ Android S+ 上的集中存储,用于整合到全设备搜索中 Room Room 是我们推荐大家采用的数据持久层,在平台上提供更多的可用性和安全性。...当您的数据库模式发生变化时,您现在可以声明一个 @AutoMigration,指出您想从哪个版本迁移到哪个版本,Room 就会为您生成迁移结果。...Room 还引入了 QueryCallback 类,用于在执行 SQLite 语句时提供回调,以简化日志等任务。

    1.6K20

    Room & Kotlin 符号的处理

    认识 Kotlin 符号处理 随着注解处理器在 Android 上的广泛使用,KAPT 成为了编译时的性能瓶颈。...和其他诸多的注解处理器一样,Room 非常依赖 Auto-Common 与 javax.lang.model 包 (Java 注解处理 API 包) 中频繁引用的类。...Kotlin 和 Java 可以互操作,但模式却不相同,例如,Kotlin 中特殊类的类型如 Kotlin 的值类或者 Java 中的静态方法。...此外,Java 类中有字段和方法,而 Kotlin 中有属性和函数。 我们决定实现 "Room 需要什么",而不是尝试去追求完美的抽象。...幸运的是,Android 支持 Gradle 变体,因此使用 KSP 和 KAPT 来运行我们 Kotlin 集成测试 便相当容易。 下一步 将 KSP 支持添加到 Room 只是第一步。

    76430

    使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间

    作者 / 软件工程师 Ting-Yuan Huang 和 Jiaxiang Chen Kotlin Symbol Processing (KSP)——用于在 Kotlin 中构建轻量级编译器插件的全新工具现已推出稳定版本...KSP 是使用 Kotlin 进行注释处理的新一代工具: 它将大幅提高 Kotlin 开发者的构建速度,而且不同于 KAPT,该工具提供了对 Kotlin/Native 和 Kotlin/JS 的支持。...为 Room 添加 KSP 支持不仅能提升编译速度,还能让 Room 更好地理解 Kotlin 代码,比如使用 KAPT 无法实现的泛型的可空性。...KSP 还解锁了如生成 Kotlin 代码等全新可能性,这让 Room 在将来会有更棒的 Kotlin 用户体验。...此举大幅提升了构建速度 (对于 Room 的 Kotlin 测试应用 而言速度提高了 2 倍),同时也意味着 KSP 可以在非 Android 以及非 JVM 环境 (如 Kotlin/Native 和

    3.7K10
    领券