zoukankan      html  css  js  c++  java
  • 安卓开发之Room实体定义数据

     使用Room实体定义数据

       在Room库中,entities(实体)代表着相关字段集.每一个entity(实体)代表着相关联数据库中的一个表.entity 类必须通过Database 类中的entities数组引用.

      定义实体类的方式:

    为了使room库能够访问到字段,实体中字段的访问权限要设为public,或者是为字段提供getter和setter方法。(getter和setter方法,基于Room中的JavaBeans约定。)

    @Entity
    public class User {
        @PrimaryKey
        public int id;
    
        public String firstName;
        public String lastName;
    }

    构造函数:

    实体可以有一个空构造函数(如果相应的DAO类可以访问每个持久化字段)或者一个包含参数的构造函数,其参数与实体中的字段的类型和名称匹配。 Room可以使用完整构造参数,或只接收某些字段的构造函数。

    主键:

    每个实体必须至少定义一个字段作为主键。即使只有一个字段,仍然需要使用@PrimaryKey注释来注释该字段。此外,如果要Room为实体分配自动ID,可以设置@ PrimaryKey的  autoGenerate属性。如果实体具有复合主键,则可以使用@Entity批注的primaryKeys属性,如以下代码段所示:

    @Entity(primaryKeys = {"firstName", "lastName"})
    public class User {
        public String firstName;
        public String lastName;
    }

    列名:

    与tableName属性类似,Room使用字段名称作为数据库中的列名称。如果希望列具有不同的名称,请将@ColumnInfo注释添加到字段中,如以下代码段所示:

    @Entity(tableName = "users")
    public class User {
        @PrimaryKey
        public int id;
    
        @ColumnInfo(name = "first_name")
        public String firstName;
    
        @ColumnInfo(name = "last_name")
        public String lastName;
    }

    表名:

    默认情况下,Room使用类名作为数据库表名。如果希望表具有不同的名称,请设置@Entity批注的tableName属性,如以下代码段所示:

    @Entity(tableName = "users")
    public class User {
        // ...
    }

     

     

  • 相关阅读:
    linux解压分卷压缩的zip文件
    centos关闭sudo的ldap认证
    IT词汇表
    IT博客汇
    os.waitpid()无法获取sys.exit()退出时的status code
    github下fork后如何同步源的新更新
    git 撤销commit
    g++编译问题:skipping incompatible /usr/lib//libboost_system.so when searching for -lboost_system
    g++动态库静态库混合链接
    thread
  • 原文地址:https://www.cnblogs.com/adressian/p/10422231.html
Copyright © 2011-2022 走看看