如何使用 Android Room 进行单行查询
How to do a single row query with Android Room
如何使用 RxJava 使用 Android Room 进行单行查询?我能够查询项目列表,没有问题。在这里,我想查找特定行是否存在。根据文档,看起来我可以 return Single 并在没有行存在的情况下检查 EmptyResultSetException 异常。
我可以有这样的东西:
@Query("SELECT * FROM Users WHERE userId = :id LIMIT 1")
Single<User> findByUserId(String userId);
如何使用这个电话?看起来有一些 onError / onSuccess 但在 Single<> 上找不到这些方法。
usersDao.findByUserId("xxx").???
任何工作示例都很棒!
According to the docs, looks like I can return Single and check for EmptyResultSetException exception if no row exists.
或者,只是 return User
,如果您通过其他方式处理后台线程。
@Query("SELECT * FROM Users WHERE userId = :id")
User findByUserId(String id);
How do I use this call?
usersDao.findByUserId("xxx")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> { ... }, error -> { ... });
在这里,我展示了 subscribe()
采用两个 lambda 表达式,用于 User
和错误。您可以改用两个 Consumer
对象。我还假设您有 rxandroid
作为 AndroidSchedulers.mainThread()
的依赖项,并且您希望 User
在该线程上传递给您。
IOW,你可以像使用 RxJava 中的任何其他 Single
一样使用它。详细信息将根据您的需要而有所不同。
如何使用 RxJava 使用 Android Room 进行单行查询?我能够查询项目列表,没有问题。在这里,我想查找特定行是否存在。根据文档,看起来我可以 return Single 并在没有行存在的情况下检查 EmptyResultSetException 异常。
我可以有这样的东西:
@Query("SELECT * FROM Users WHERE userId = :id LIMIT 1")
Single<User> findByUserId(String userId);
如何使用这个电话?看起来有一些 onError / onSuccess 但在 Single<> 上找不到这些方法。
usersDao.findByUserId("xxx").???
任何工作示例都很棒!
According to the docs, looks like I can return Single and check for EmptyResultSetException exception if no row exists.
或者,只是 return User
,如果您通过其他方式处理后台线程。
@Query("SELECT * FROM Users WHERE userId = :id")
User findByUserId(String id);
How do I use this call?
usersDao.findByUserId("xxx")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> { ... }, error -> { ... });
在这里,我展示了 subscribe()
采用两个 lambda 表达式,用于 User
和错误。您可以改用两个 Consumer
对象。我还假设您有 rxandroid
作为 AndroidSchedulers.mainThread()
的依赖项,并且您希望 User
在该线程上传递给您。
IOW,你可以像使用 RxJava 中的任何其他 Single
一样使用它。详细信息将根据您的需要而有所不同。