如何添加带参数和 return 数据的 ROOM 查询
How to add ROOM queries that take parameters and return data
我正在尝试创建一个新的房间数据库查询,它接受一个参数和 returns 一个列表。我阅读的所有文档和我观看的视频只显示了 DAO 查询(我已经完成),但我找不到的是如何为存储库和 viewModel classes 创建后续查询。
这是我的 DAO 查询;
@Query("SELECT * FROM member WHERE name = :reselectedPlayerName")
List<Member> getPlayersForReselection(String reselectedPlayerName);
我已经成功创建了一个 'LiveData' 查询(用于另一个任务),它不带任何参数,但这次我不想要实时数据查询,而且我看不到如何在存储库中创建查询class.
答案一如既往地简单!...但是当您只见树木不见森林时...
如果有人想要更多细节,我很乐意详细说明我发现了什么和做了什么,但这就是我最终做的;
(我知道我说过我不想使用 LiveData 但我只是为了证明)
DAO
@Query("SELECT * FROM member WHERE name = :aStr")
LiveData<List<Member>> getPlayersForReselectionDb(String aStr);
存储库
public LiveData<List<Member>> getPlayersForReselectionDb(String aStr){
reselectedMembers = memberDAO.getPlayersForReselectionDb(aStr);
return reselectedMembers;
}
视图模型
public LiveData<List<Member>> getPlayersForReselectionDb(String aStr) {
reselectedMembers = memberRepository.getPlayersForReselectionDb(aStr);
return reselectedMembers;
}
片段
MemberViewModel memberViewModel = new
ViewModelProvider(this).get(MemberViewModel.class);
memberViewModel.getPlayersForReselectionDb("Fred Bloggs").observe(this,
new Observer<List<Member>>() {
@Override
public void onChanged(List<Member> members) {`enter code here`}
}
});
我正在尝试创建一个新的房间数据库查询,它接受一个参数和 returns 一个列表。我阅读的所有文档和我观看的视频只显示了 DAO 查询(我已经完成),但我找不到的是如何为存储库和 viewModel classes 创建后续查询。 这是我的 DAO 查询;
@Query("SELECT * FROM member WHERE name = :reselectedPlayerName")
List<Member> getPlayersForReselection(String reselectedPlayerName);
我已经成功创建了一个 'LiveData' 查询(用于另一个任务),它不带任何参数,但这次我不想要实时数据查询,而且我看不到如何在存储库中创建查询class.
答案一如既往地简单!...但是当您只见树木不见森林时... 如果有人想要更多细节,我很乐意详细说明我发现了什么和做了什么,但这就是我最终做的; (我知道我说过我不想使用 LiveData 但我只是为了证明)
DAO
@Query("SELECT * FROM member WHERE name = :aStr")
LiveData<List<Member>> getPlayersForReselectionDb(String aStr);
存储库
public LiveData<List<Member>> getPlayersForReselectionDb(String aStr){
reselectedMembers = memberDAO.getPlayersForReselectionDb(aStr);
return reselectedMembers;
}
视图模型
public LiveData<List<Member>> getPlayersForReselectionDb(String aStr) {
reselectedMembers = memberRepository.getPlayersForReselectionDb(aStr);
return reselectedMembers;
}
片段
MemberViewModel memberViewModel = new
ViewModelProvider(this).get(MemberViewModel.class);
memberViewModel.getPlayersForReselectionDb("Fred Bloggs").observe(this,
new Observer<List<Member>>() {
@Override
public void onChanged(List<Member> members) {`enter code here`}
}
});