room的使用-以demo为例

本文通过一个demo详细介绍了如何使用Room数据库,包括环境配置、Entity定义、DAO操作、数据库初始化、与ContentProvider结合、类型转换器的使用、数据库迁移,并探讨了从原生SQLite到Room的迁移以及JSON转实体与Entity的关系。提供了完整的代码示例和注意事项。
摘要由CSDN通过智能技术生成

前言

本文是以demo为例介绍,所以部分内容和解释会在demo里以注释的形式给出。
下载链接

数据库的构建

环境配置

在app模块的build.gradle添加以下内容:


    compile 'android.arch.lifecycle:extensions:1.0.0-alpha5'

    compile 'android.arch.lifecycle:runtime:1.0.0-alpha5'

    compile 'android.arch.persistence.room:runtime:1.0.0-alpha5'

    testCompile 'junit:junit:4.12'

    annotationProcessor 'android.arch.lifecycle:compiler:1.0.0-alpha5'

    annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha5"



    //数据库迁移的时候使用

    compile "android.arch.persistence.room:testing:1.0.0-alpha5"

在项目的build.gradle中添加


allprojects {

    repositories {

        jcenter()

        maven {

            url "https://dl.google.com/dl/android/maven2/"

            //官方给出的链接是maven.google.com,但是这个网站连不上

        }

    }

}

entity

当一个类用@Entity注解并且被@Database注解中的entities属性所引用,Room就会在数据库中为那个entity创建一张表。

默认Room会为entity中定义的每一个field都创建一个column。如果一个entity中有你不想持久化的field,那么你可以使用@Ignore来注释它们,在项目的db/entities目录下:

student.java


//也可以使用组合主键,使用@Entity注解的primaryKeys属性

//@Entity(primaryKeys = {"firstName", "lastName"})



//也可以使用索引或者组合索引

//@Entity(indices = {@Index("name"), @Index("name", "student_id")})



@Entity(tableName = Student.TABLE_NAME)

public class Student {
   

    //静态成员并不会被转换为数据库中的条目

    /** 表名 */

    public static final String TABLE_NAME = "students";

    public static final String COLUMN_NAME = "student_name";

    public static final String COLUMN_ID = "student_id";



    //每个表必须要有一个主键

    @PrimaryKey

    @ColumnInfo(index = true, name = COLUMN_ID)

    private long uid;



    //自己定义列名

    @ColumnInfo(name = COLUMN_NAME)

    private String name;



    private int age;



    private String subject;



    @Ignore

    Bitmap picture;



    ...

}

DAOs

dao文件中主要存放对数据库的操作,在项目的db/dao目录下

StudentDao



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值