Библиотека Room для работы с данными поддерживает представления баз данных SQLite , которые позволяют инкапсулировать запрос в класс. Room называет эти классы, использующие запросы, представлениями , и вы можете использовать их в качестве объектов данных в объекте доступа к данным (DAO) .
Создать представление
Для создания представления добавьте аннотацию @DatabaseView к классу. Установите значение аннотации равным запросу, который представляет этот класс.
Приведённый ниже фрагмент кода демонстрирует пример представления:
@DatabaseView( """ SELECT User.id, User.name, User.departmentId, Department.name AS departmentName FROM User INNER JOIN Department ON User.departmentId = Department.id """ ) data class UserDetail( val id: Long, val name: String?, val departmentId: Long, val departmentName: String? )
Свяжите представление с вашей базой данных.
Чтобы добавить это представление в вашу базу данных, добавьте свойство views в аннотацию @Database вашего приложения:
@Database( entities = [User::class, Department::class], views = [UserDetail::class], version = 1 ) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao }