ایجاد نماها در پایگاه داده

نسخه 2.1.0 و بالاتر کتابخانه Room persistence از نماهای پایگاه داده SQLite پشتیبانی می کند و به شما امکان می دهد یک پرس و جو را در یک کلاس کپسوله کنید. Room به این کلاس‌های دارای پشتوانه پرس و جو به‌عنوان view اشاره می‌کند و وقتی در یک DAO استفاده می‌شود، مانند اشیاء داده ساده رفتار می‌کنند.

یک نمای ایجاد کنید

برای ایجاد نما، حاشیه نویسی @DatabaseView را به یک کلاس اضافه کنید. مقدار حاشیه نویسی را روی عبارتی که کلاس باید نمایش دهد، تنظیم کنید.

قطعه کد زیر نمونه ای از یک view را ارائه می دهد:

کاتلین

@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?
)

جاوا

@DatabaseView("SELECT user.id, user.name, user.departmentId," +
              "department.name AS departmentName FROM user " +
              "INNER JOIN department ON user.departmentId = department.id")
public class UserDetail {
    public long id;
    public String name;
    public long departmentId;
    public String departmentName;
}

یک View را با پایگاه داده خود مرتبط کنید

برای گنجاندن این نما به عنوان بخشی از پایگاه داده برنامه خود، ویژگی views در حاشیه نویسی @Database برنامه خود قرار دهید:

کاتلین

@Database(entities = [User::class],
          views =[UserDetail::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

جاوا

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