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

Androidroom数据库使用小结(kotlin)

简单的使用: 第一步,在entiy包中增加实体类的定义,每个实体类对应一个表,,类前面加@Entity注解,默认类名就是最终生成的表名,如果不想让一致,可以指定表名(@Entity (tableName...自增类型的主键,则可以设置 @PrimaryKey 的 autoGenerate 属性。 忽略字段: 使用@Ignore注解,如,@Ignore val picture: Bitmap?...更改字段名使用@ColumnInfo(name = "xxx")注解,如果不指定,默认就是属性名。...import com.xxx.xx.room.entity.Age import com.xxx.xx.room.entity.User @Database(entities = [User::class...当修改表字段或者增加表结构时,数据库升级注意事项: 无论是增加新表还是只是修改表字段或增加表字段,都需要增加下数据库的版本号并增加Migration处理, @Database(entities = [User

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

Jetpack组件之Room

//exportSchema = true 生成数据库创建表或升级等操作及字段描述的json文件 //修改数据库版本直接通过version修改 //SkipQueryVerification注解是编译时候是否验证...Ignore标签,让Room忽略这个构造器 * Ignore也可用于字段 * Room不会保存@Ignore注解标记的字段的数据 */ @Ignore public...每个Entity至少有一个字段作为主键,如果想让数据库为字段自动分配ID,可以使用autoGenerate,如果Entity想有符合主键,可以使用@Entity注解里的primaryKeys,设置复合主键...Room通过@Ignore设置忽略字段,如果Entity继承了父Entity的字段可以通过@Entity注解里的ignoredColumns属性设置。...@Dao public interface CacheDao { //插入冲突解决方案,默认ABORT(中止)。REPLACE(替换)。IGNORE(忽略插入数据)。ROLLBACK(回滚)。

1.8K20

JetPack--Room数据库

' 定义一个实体类,在class上使用 @Entity注解 ,还需要一个构造方法,Room会根据这个构造将表里的数据转化为实体类,对于其他我们代码里使用的构造方法,可以使用@Ignore注解表示Room...将忽略它,属性也可以使用这个注解,表示这个属性将不会生成数据库字段 使用@PrimaryKey注解指定主键并且是自增长的 属性还可以指定在数据库的字段等,使用@ColumnInfo注解: package...@Update void updateUser(User user); } 定义抽象类,继承于RoomDatabase,并使用@Database注解,注解中指定表的实体类、数据库版本、是否输出日志...使用单例模式时,构造方法不能私有化,因为Room内部会调用构造方法 定义获取Dao对象的抽象函数 package com.aruba.room; import android.content.Context...二、ViewModel+LiveData+Room Room支持返回LiveData类型,结合ViewModel、DataBinding,就可以改造成一个非常棒的MVVM架构 package com.aruba.room

1.5K20

MVVM的数据持久化(一)——ROOM的集成

如果你想让Room为entity设置自增ID,你可以设置@PrimaryKey的autoGenerate属性。...如果你的entity有一个组合主键,你可以使用@Entity注解的primaryKeys属性。 2.tableName Room默认把类名作为数据库的表名。...3.ColumnInfo Room默认把field名称作为数据库表的column名。如果你想让column有不一样的名称,为field添加@ColumnInfo属性。...要为一个entity添加索引,在@Entity注解中添加indices属性,列出你想放在索引或者组合索引中的字段。 有时候,某个字段或者几个字段必须是唯一的。...这种情况下,你可以使用@Embedded注解,表示你想把一个对象分解为表的子字段。然后你就可以像其它独立字段那样查询这些嵌入的字段

1.5K20

【Jetpack】使用 Room Migration 升级数据库并导出 Schema 文件 ( Schema 文件简介 | 生成 Schema 文件配置 | 生成 Schema 文件过程 )

; Schema 文件是 描述 Room 数据库结构的文件 , 通过该文件 , 可以 很方便地开发者了解数据库的历史变更记录 , 方便排查问题 ; Schema 文件 定义了数据库中的表、列、索引等元素的结构...任务,它会将 Schema 文件导出到指定的目录中 , 该目录需要在 build.gradle 构建脚本中配置 ; 二、生成 Schema 文件配置 在进行 Room 数据库升级时 , 可以使用 Room..., exportSchema 参数都设置为了 false , 没有导出 Schema 文件 ; 此外 , 还要在 build.gradle 构建脚本中 配置 Schema 文件的生成位置 , 在 " android...": "$projectDir/schemas".toString() 参数 ; 完整的配置层级如下 : android { namespace 'kim.hsl.rvl' compileSdk..., 在 数据库版本 1 的基础上 , 添加 sex 字段 ; /** * 性别字段 * 数据库表中的列名为 sex * 数据库表中的类型为 INTEGER 文本类型

29910

Android Room数据库使用

Room是对象关系映射型数据库,所以你可以不用写这个@ColumnInfo注解,写它主要是为了设置列名,不写则使用变量名做为列名。...假设我一个表中有30个字段,实际上用到的只有5个,那么另外25个就不需要进行创建了,则使用@Ignore注解进行忽略。...下面是数据库的创建,在db包下新建一个MyDatabase类,继承RoomDatabase,代码如下: @Database(entities = {User.class}, version = 1, exportSchema...version = 1表示数据库的版本,可以做数据库的升级操作。 注意这是一个抽象类,在编译时Room会帮助构建实现类。 现在运行一下,手机或者模拟器都可以。然后什么都不用去做。...(getApplicationContext(), MyDatabase.class, "DemoDB") //是否允许在主线程上操作数据库,默认false。

1.2K30

Android Room数据库使用

Room是对象关系映射型数据库,所以你可以不用写这个@ColumnInfo注解,写它主要是为了设置列名,不写则使用变量名做为列名。...假设我一个表中有30个字段,实际上用到的只有5个,那么另外25个就不需要进行创建了,则使用@Ignore注解进行忽略。...下面是数据库的创建,在db包下新建一个MyDatabase类,继承RoomDatabase,代码如下: @Database(entities = {User.class}, version = 1, exportSchema...version = 1表示数据库的版本,可以做数据库的升级操作。 注意这是一个抽象类,在编译时Room会帮助构建实现类。 现在运行一下,手机或者模拟器都可以。然后什么都不用去做。...(getApplicationContext(), MyDatabase.class, "DemoDB") //是否允许在主线程上操作数据库,默认false。

66520

Android Architecture Components Part1:Room

"android.arch.persistence.room:testing:$room_version" 11} Room 上面的依赖添加完成后,接下来我们可以正式使用Room。...而Room正好可以帮助我们减少代码、简化复杂度。...在Entity中可以通过使用tableName来为该表命名,这里将其命名未contacts。 除此之外,使用@ColumnInfo来标明表中的字段,@PrimaryKey来标明表的主键。...其中@ColumnInfo也可以通过(name = "name")来命名字段名。当然还有别的注释例如外键的标明:@ForeignKey DAO 数据库表建好了,现在是提供操作数据表中的数据的方法。...Room的强大之一是:它可以在编译时检测你的SQL语句是否编写正确,如果编写错误将导致编译失败。这样就可以避免App在运行时导致崩溃。这个读者可以自行测试一下。

78620

Android 原生 SQLite 数据库的一次封装实践

一、背景 毫无疑问,关于Android数据库现在已经有很多流行好用的ORM框架了,比如:Room、GreenDao、DBFlow等都提供了简洁、易用的API,尤其是谷歌开源的Room是目前最主流的框架...因此感觉可以将数据库操作以网络请求的方式进行抽象和封装,其详细对比如下表所示: 通过上述相似性的对比并综合现有ORM框架来考虑切入口,首先想到的是使用注解: 主流Room使用的是编译时注解(更有利于性能...; 3、创建FooService实例: Sponsor sponsor = new Sponsor.Builder(this) .allowMainThreadQueries() //是否运行在主线程操作...不过这个工具只是展示了简单的类结构信息(仅包含类、函数、字段)而已,我们可以更进一步看一下该类对应的字节码来确认下,直接使用AS打开apk,展开classes.dex找到对应类,右键->"Show ByteCode.../+/android-room-release:room/compiler/src/main/kotlin/androidx/room/processor/ https://techblog.bozho.net

92110

Android Room 持久化库

这是一篇自己从Android开发文档中翻译来的关于Room 的文档。...默认 Room 会为 每个字段在表中创建对应的字段;如果其中一些属性不想被创建在表中怎么办,那就是使用 @Ignore 注解此属性。完成实体的创建之后必须在 Database 引用。...Sqlite中表名不区分大小写[^] 就像表名一样,字段的名字默认的也是类中属性的名字如果想设置其他名字,可使用 @ColumnInfo 的 name属性 @Entity(tableName = "users...[^] 嵌套字段可以嵌套其他字段[^] 如果数据实体中有多个 嵌套字段可以通过设置属性 prefix 加前缀的方式保证字段名不重复。...要使用此功能,需要将 Room 组中的 android.arch.persistence.room:rxjava2 组件添加到构建Gradle依赖项中,添加组件之后就可以返回 Rxjava2 中的对象

4K70

【Jetpack】Room 中的销毁重建策略 ( 创建临时数据库表 | 拷贝数据库表数据 | 删除旧表 | 临时数据库表重命名 )

一、销毁 和 重建策略 在 Android 中使用 Room 操作 SQLite 数据库 , 如果 SQLite 数据库表 修改比较繁琐 , 如 : 涉及到 修改 数据库表字段的数据类型 , 需要逐个修改数据库值...1、数据库版本 3 代码示例 RoomDatabase 数据库类完整代码 package kim.hsl.rvl import android.content.Context import android.util.Log...*/ @Ignore lateinit var studentInfo: String /** * 默认的构造方法给 Room 框架使用 */...import android.util.Log import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase...*/ @Ignore lateinit var studentInfo: String /** * 默认的构造方法给 Room 框架使用 */

31740

Android Jetpack - Room

的单一事实来源,允许用户在应用内查看关键信息的一致副本,无论用户是否具有互联网连接 处理重要数量的结构化数据的应用程序可以从本地保存数据中受益匪浅。...在运行时,你可以通过调用 Room.databaseBuilder()或 Room.inMemoryDatabaseBuilder()来获取 Database 实例 Entity 数据库中的表...,如果在同一张表中存在多个可能重复的字段时例如 BookA().word 和 BookB().word ,就可以使用 @ColumnInfo(name = "a_word")、 @ColumnInfo(...阶段处理一些初始化操作,比如填充默认数据等 @Database(entities = [Word::class], version = 1,exportSchema = false) public abstract...://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin https://developer.android.com

1.9K70

Room组件的用法

一.Android官方ORM数据库Room   Android采用Sqlite作为数据库存储。...Entity类是Sqlite中的表对java类的映射,例如有一个学生表,有id,name,age三个字段;那么对应的就有一个学生类,有id,name,age三个成员变量和学生表中的字段进行一一对应。   ...Dao:即Data Access Object,数据访问对象,就是字面意思,可以通过他来访问数据库中的数据。   ...就是建立一个从数据库表到java类的映射,表中的字段对应类中的成员变量,表中的记录对应该类的一个实例。...注解用于将Student类和Room数据库中的数据表对应起来;@PrimaryKey注解即主键约束;@ColumnInfo注解可以设置该成员变量对应的表中字段的名称以及类型   需要注意的一点是get方法不可省略

22520
领券