房间 - 检查最近是否提取数据

Fra*_*cis 8 android dao android-room android-architecture-components android-jetpack

官方应用程序架构指南是存储库的一个例子.检查一个对象是否存在于数据库中,如果是新的:

// check if user was fetched recently
boolean userExists = userDao.hasUser(FRESH_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)

任何想法如何为DAO 实现该功能(hasUser)?

Nym*_*412 5

此处提供大多数体系结构组件示例。你的情况,我找不到UserDAO的类,但有一个数据库架构样品在这里users表中有一last_update列。所以你可以这样写UserDao:

@Query("SELECT COUNT(*) FROM users WHERE userId == :userId AND last_update >= :timeout)
int hasUser(int userId, long timeout)
Run Code Online (Sandbox Code Playgroud)

如果具有id的用户userId不够新鲜,则返回0 。


Flo*_*lin 1

您应该在表中添加一个额外的字段,例如COLUMN_LAST_FETCHED日期,并在每次询问后使用时间戳更新该字段。