android - 如何使用 Room 在库中添加新表?

标签 android android-library android-room

我正计划开始将现有应用程序迁移到架构组件,我的疑问之一是我应该如何组织新代码。

我在个人库中添加了一些表,这些表仅包含在某些版本中,如果数据库类存在于主应用程序中,如何将这些实体和 DAO 添加到主应用程序中?

我应该向库中添加另一个数据库类吗?如果是这样,它不会与主应用程序中现有的数据库类发生冲突吗?

我一直在搜索,但没能找到任何示例或教程...

编辑以澄清数据库问题

从文档中我了解到,在数据库抽象类中,您必须知道存在哪些实体并为 DAO 创建访问方法。 如果库中有实体,如何做到这一点?

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserDao userDao();
}

最佳答案

@Database(version = 1, entities = {User.class, Book.class})
abstract class AppDatabase extends RoomDatabase {
     // BookDao is a class annotated with @Dao.
     abstract public BookDao bookDao();
     // UserDao is a class annotated with @Dao.
     abstract public UserDao userDao();
     // UserBookDao is a class annotated with @Dao.
     abstract public UserBookDao userBookDao();
}

如果你想更新 Room 数据库并添加表...只需添加另一个实体然后更新版本如果你添加另一个实体如 Movies 表......做这样的事情

@Database(version = 2, entities = {User.class, Book.class, Movies.class})
abstract class AppDatabase extends RoomDatabase {
     // BookDao is a class annotated with @Dao.
     abstract public BookDao bookDao();
     // UserDao is a class annotated with @Dao.
     abstract public UserDao userDao();
     // UserBookDao is a class annotated with @Dao.
     abstract public UserBookDao userBookDao();
     // MoviesDao is a class annotated with @Dao.
     abstract public MoviesDao moviesDao();
     // UserMoviesDao is a class annotated with @Dao.
     abstract public UserMoviesDao userMoviesDao();
}

作为引用,您可以检查... this

关于android - 如何使用 Room 在库中添加新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48743239/

相关文章:

android - 如何防止触摸时出现软键盘

java - 安卓 : calling a user defined method causing application misbehave

java - JAR 中的 Android 库资源

java - 限制方法接受 ContextCompat 解析的资源

android - 从 DB 文件创建 Android Room 实体类

java - 安卓 : nonwritablechannelException and ClosedChannelException

android - 如何在 fragment 和非父 Activity 之间传输数据?

android - 为什么我的 Android 应用程序中有一个 "libs"文件夹?

android - 房间迁移根据现有的值添加列

android - RecyclerView 项目未使用 LiveData 更新