美文网首页
【白水日记】Room database

【白水日记】Room database

作者: d2665f7588cb | 来源:发表于2021-02-19 14:29 被阅读0次

        Room是Jetpack中的一个组件,处理和配置数据库的琐事,内部实现还是SQLite

    数据通常使用数据类表示,使用函数get set修改访问,但在数据库中,需要使用实体和查询来操作

    实体表示数据存储在数据库的对象,一个实体类对应一个表,每个实例对应表中的一行,每个属性对应表的一列

    查询表示数据库中表或组合信息的请求,对执行的操作,常用的查询有增删改

    room已经做了kotlin数据类存储到sqlite数据表中的实体的过程,同时实现了函数声明到sql查询的复杂工作

    使用时,必须将每个实体定义为带注释的数据类,交互接口同样需要带上注释,也即dao对象,room使用这些对象进行创建表,操作查询

       定义一个数据类,在类名上注释

    @Entity(tableName = "xxxxxx")

    tableName可以不写,默认就是类名

    定义一个主键,在属性上添加注释

    @PrimaryKey(autoGenerate = true)

    定义其他属性,在属性上添加如下注释

    @ColumnInfo(name = "xxxxxx")

    这样,数据dao就定义好了

    ---------------------------------------------------------------------------      关于操作,常用的就是@Insert,@Delete,@Update 

        进行相关操作,需要创建一个接口,用@Dao注释,接口主体内,新增一个insert()方法,上面使用@insert()注释,内部使用数据库实体类作为参数

    update方法类似,query没有提供更详细的注释,需要在@Query之后写上详细的查询语句

    @Query("SELECT * from xxx WHERE Id = :key")

    方法的参数可以作为查询条件变量,只需要在前面加一个":"即可

    @Delete方法表示删除一个条,但是对于清除表中所有的条目来说效率不高,如果只是清除数据,可以使用@Query()中执行DELETE语句进行删除

    ---------------------------------------------------------------------------

    创建数据库,创建一个数据库,需要在类上面用@Database注释,数据库一般都是单例的,在getInstance方法中创建一个实例,如果库不存在,需要生成一个数据库,

    @Database的参数中,使用entities表示实体类,version表示版本号

        database对象可以定义一个companion对象,允许不实例的情况下进行访问创建或获取,在kotlin中可以通过@Volatile注释设置INSTANCE对象

    相关文章

      网友评论

          本文标题:【白水日记】Room database

          本文链接:https://www.haomeiwen.com/subject/nxxwxltx.html