• 安卓开发之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 {
        // ...
    }

     

     

  • 相关阅读:
    java 8 , merge()
    2026 11 12
    koda java
    Linq实现between拓展
    WinForm开发----关闭window窗体最好的办法
    ASP.NET中指定自定义HTTP响应标头
    使用Zxing.net实现asp.net mvc二维码功能
    实现asp.net mvc页面二级缓存,提高访问性能
    队列应用
    Ubuntu 12.04使用uginx+fastcgi-mono-server2部署asp.net 网站
  • 原文地址:https://www.cnblogs.com/adressian/p/10422231.html
Copyright © 2020-2023  润新知