使用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 {
// ...
}

 

 

安卓开发之Room实体定义数据的更多相关文章

  1. 安卓开发之ListAdapter(一)

    Adapter常用来管理数据,是连接后端数据和前端显示的适配器接口,是数据和UI(view)之间一个重要的纽带.再常见的view(listview.gridview)等地方都需要用到adapter,下 ...

  2. 安卓开发之Toolbar

    根据官网的教程,发现实现与预期不一致,查看相关资料自己整理了一下(官网开发文档:https://developer.android.com/training/appbar/setting-up.htm ...

  3. 安卓开发之HttpURLConnection类和Handler类的使用

    package com.lidaochen.test; import java.io.ByteArrayOutputStream; import java.io.InputStream; public ...

  4. 安卓开发之sql语句增删改查2(利用谷歌封装好的API进行增删改查)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  5. 安卓开发之ListView入门

    <!--这个地方最好用match_parent 这样效率高--> <ListView android:layout_width="match_parent" an ...

  6. 安卓开发之intent

    两个活动之间的跳转要通过intent来进行,intent跳转分为隐式的和显示的. 首先xml中定义Button,通过按下按钮实现回调,在回调函数中进行相应intent设置. <Button an ...

  7. 安卓开发之ListAdapter(二)

    今天我们来学习一下ArrayAdapter: ArrayAdapter是安卓中最简单的适配器.使用ArrayAdapter(数组适配器),需要把数据源存 放至数组里面来显示. •构造函数: publi ...

  8. 安卓开发之activity详解(sumzom)

    app中,一个activity通常是指的一个单独的屏幕,相当于网站里面的一个网页,它是对用户可见的,它上面可以显示一些控件,并且可以监听处理用户的时间做出响应. 那么activity之间如何进行通信呢 ...

  9. 安卓开发之UIwebview

    web view在安卓开发中是比较常见的UI,像微信的新闻模块就采用了这个,他的作用越来越广,下面我把以前做的贴了出来,如果有更好的办法,希望大神不吝赐教哈,嘿嘿,纯代码来了: java代码 publ ...

随机推荐

  1. appium-doctor

    1.   I installed appium-1.5.3.dmg But when I click the stethoscope button the Appium is show error : ...

  2. CentOS7安装tyk(内部部署)

    CentOS7安装tyk(内部部署) 参考 官方文档 github 环境准备 #确保端口3000处于打开状态:Dashboard使用该端口来提供GUI和Developer Portal #Tyk需要P ...

  3. mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)

    一.概述 mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表.实际上,它集成了mysql工具中check,repair,analyze,optimize功能,对于check ...

  4. Android Studio 快捷键总结(OS X)

      Action shortcut key 解释 跳转到类 cmd+0   跳转到文件 cmd+shift+0   跳转到函数 cmd+alt+0   最近打开的文件 cmd+e   最近编辑的文件 ...

  5. android 中的Http请求类HttpUrlConnection和HttpClient类

    Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient. 如何选择这两个类的使用:android-developers.blogspot.com/2011 ...

  6. 面试:C++观察者模式实现

    #include <list> class Subject; class Observer{ public: virtual ~Observer(){}; virtual void upd ...

  7. linux上可代替ftp的工具rz和sz

    对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令,因此简单的 ...

  8. SpringBoot自动配置注解原理解析

    1. SpringBoot启动主程序类: @SpringBootApplication public class DemoApplication { public static void main(S ...

  9. Struts2之ValueStack、ActionContext

    今天在看Action获取Resquest.Response时,发现了一个词:值栈.于是今天一天都在看,了解了值栈不仅能知道Action怎么获取request.response等这些,还会了解OGNL语 ...

  10. MyBatis——MyEclipse中使用mybatis-generator

    mybatis-generator可以根据数据库的表来生成POJO类.mapper.xml和DAO接口,用这个插件会大大地提高开发的效率.网上虽然有一些使用这个插件的教程,但我单个试了并不能成功,会出 ...