android room表关联,Android Room的用法
Android Room的用法
SQLite是Android内置的轻量级关系型数据库,但直接使用SQLite core包做数据库操作有以下劣势:需要编写长且重复的代码,这会很耗时且容易出错。
管理SQL困难,特别对于复杂的数据库结构。
Room是在这样的背景下应运而生。Room充当现有SQLite API的抽象层。 SQLiite API所有必需的包,参数,方法和变量都使用简单的注释Annotation来表示。相应的Annotation如下:@Entity:数据模型类,对应数据库的表
@Dao:使用一个接口类来表示Dao(Data Access Object)
@Database:使用此注释的类会创建一个抽象的Dao
@PrimaryKey:标识属性为表的主键
@Insert:插入到表的数据
@Update:更新到表数据
@Delete:删除表的数据
@Query:执行SQL查询
下面以一个示例讲解下Room的用法。
1、在build.gradle文件中添加gradle依赖关系。implementation “android.arch.persistence.room:runtime:1.0.0”
annotationProcessor “android.arch.persistence.room:compiler:1.0.0”
2、创建数据库表的数据模型类@Entity
public class Movies {
@NonNull
@PrimaryKey
private String movieId;
private String movieName;
public Movies() {
}
public String getMovieId() { return movieId; }
public void setMovieId(String movieId) { this.movieId = movieId; }
public String getMovieName() { return movieName; }
public void setMovieName (String movieName) { this.movieName = movieName; }
}
其中@PrimaryKey标记movieId为主键。
3、创建Dao类,并且添加CRUD对应的抽象方法。@Dao
public interface DaoAccess {
@Insert
void insertOnlySingleMovie (Movies movies);
@Insert
void insertMultipleMovies (List moviesList);
@Query (“SELECT * FROM Movies WHERE movieId = :movieId“)
Movies fetchOneMoviesbyMovieId (int movieId);
@Update
void updateMovie (Movies movies);
@Delete
void deleteMovie (Movies movies);
}
@Query自定义了查询的SQL。
4、实现Database类@Database (entities = {Movies.class}, version = 1, exportSchema = false)
public abstract class MovieDatabase extends RoomDatabase {
public abstract DaoAccess daoAccess() ;
}
此Database类扩展与RoomDatabase,它提供了daoAccess()的抽象方法。
5、在Activity或Fragment类中为Database类声明和初始化对象。private static final String DATABASE_NAME = “movies_db”;
private MovieDatabase movieDatabase;
movieDatabase = Room.databaseBuilder(getApplicationContext(),
MovieDatabase.class, DATABASE_NAME)
.fallbackToDesctructiveMigration()
.build();
初始的步骤完成。 通过使用数据库对象,可以执行数据库管理的所有功能。
插入代码示例:new Thread(new Runnable() {
@Override
public void run() {
Movies movie =new Movies();
movie.setMovieId( “2”);
movie.setMovieName(“芳华”);
movieDatabase.daoAccess () . insertOnlySingleMovie (movie);
}
}) .start();
建议:使用Thread,AsyncTask来执行数据库操作。
Android Room的用法相关教程
android room表关联,Android Room的用法相关推荐
- android room表关联,如何在首次运行时填充Android Room数据库表?
我尝试了许多方法可以做到这一点,每个没有提供. 首先,我尝试使用'addMigrations'方法向Room中添加Migration实现,但发现它只在数据库升级期间运行,但不在创建时运行. 然后,我尝 ...
- android 自定义表单,Android实现Ant Design 自定义表单组件
Ant Design 组件提供了Input,InputNumber,Radio,Select,uplod等表单组件,但实际开发中这是不能满足需求,同时我们希望可以继续使用Form提供的验证和提示等方法 ...
- PostgresSql 多表关联删除语句
最近用PostgresSql数据库进行多表关联删除的操作,在写sql语句的时候遇到了问题: DELETE s.* FROM student s,classroom c WHERE s.cid = c. ...
- PostgreSQL 多表关联删除
用PostgreSQL数据库删除某个表数据 student,需要关联多个表(如classroom)作为条件,以下语句走不通: delete s.* from student s,classroom c ...
- android 生成aar文件,Android 中.aar文件生成方法与用法
https://i.cnblogs.com/EditPosts.aspx?opt=1 无论是用Eclipse还是用Android Studio做android开发,都会接触到jar包,全称应该是:Ja ...
- android 生成多个表单,Android根据word模板文档将表单数据生成word文档的方案整理...
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 尝试的方案包括以下几种: freemarker 只能在java项目上运行,无法在Android项目上运行: poi 解析doc文件可 ...
- android switcher控件,Android ViewSwitcher 的功能与用法
ViewSwitcher 代表了视图切换组件, 本身继承了FrameLayout ,可以将多个View叠在一起 ,每次只显示一个组件.当程序控制从一个View切换到另个View时,ViewSwitch ...
- 【Android 逆向】Android 逆向通用工具开发 ( Android 逆向通用工具组成部分 | 各模块间的关联 )
文章目录 一.Android 逆向通用工具组成部分 二.Android 逆向通用工具 各模块间的关联 一.Android 逆向通用工具组成部分 Android 逆向通用工具 肯定是跨平台的 , 涉及到 ...
- 【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )
文章目录 前言 一.创建 Android 项目 二.关联 Android 工程与 Flutter Module 工程 1.配置 Flutter Module工程 2.配置 build.gradle 3 ...
最新文章
- jwt怎么获取当前登录用户_spring oauth2如何获取当前登录用户信息
- windows adb shell 乱码
- Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。
- mysql怎么改字体编码_mysql怎么改字符编码?
- 什么比日期和时区更难? SQL / JDBC中的日期和时区!
- DrawImage内存不足问题
- Centos7 解决Docker拉取镜像慢的问题
- selenium动态网页爬虫复习
- 研旭至尊板——F28335知识点总结①
- 冯.诺依曼计算机结构要点
- 英语口语笔记B1-Unit04.家居生活-02-Buying household products
- loadrunner icrosoft Visual c++2005 sp1 提示命令行选项语法错误,键入“命令/?”
- python文件的用法_关于.py文件的详细介绍
- 十二星座日期、性格、特性查询表
- 202312读书笔记|《赶时间的人》——灰暗的从前会成为照亮未来的光,艰难的生活里,诗歌是那陡峭的另一面
- 一、团队建设能力在管理中的应用(注重协作)
- 小圣求职记B:总集篇
- 5G 安全评估流程指南
- libgdx, couldn't load shared library 'gdx' for target: Linux, 32-bit的终极解决方案
- 计算机辅助机床,计算机辅助机床造型设计.pdf