Android - 使用 Room 从 SQLite 获取单个对象
Android - Get a single object from SQLite using Room
我正在开发我的第一个应用程序,我可以在 SQ Lite 数据库中添加、编辑、删除...对象。
到目前为止一切正常。还可以使用 LiveData 加载所有存储的对象。
当我想从我的数据库加载单个对象时,任何人都可以建议我,存储库中的代码应该是什么样子?
Dao 中的代码如下所示:
@Query("SELECT * FROM lens_table WHERE id = :lensId LIMIT 1")
Lens getLensById(int lensId);
我在存储库中尝试使用像这样的简单代码:
public Lens getLensById(int id) {
Lens lens = lensDao.getLensById(id);
}
但这不起作用 - 我认为问题是这应该在异步任务中完成,因为我用它来删除项目。
public void delete(Lens lens) {
new DeleteLensAsyncTask(lensDao).execute(lens);
}
private static class DeleteLensAsyncTask extends AsyncTask<Lens, Void, Void> {
private final LensDao lensDao;
private DeleteLensAsyncTask(LensDao lensDao) {
this.lensDao = lensDao;
}
@Override
protected Void doInBackground(Lens... lenses) {
lensDao.delete(lenses[0]);
return null;
}
}
这就是我开始纠结的地方 - 存储库中的方法应该是什么样子?
在 activity 中,分别在 ViewHolder 中,我正在使用从 activity.
的 onCreate 方法调用的代码
public Lens getLensById(int id) {
return repository.getLensById(id);
}
非常感谢!
界面
@Query("SELECT * FROM lens_table WHERE id = :lensId LIMIT 1")
LiveData<Lens> getLensById(int lensId);
回购
public LiveData<Lens> getLensById(int id) {
return lensDao.getLensById(id);
}
视图模型
public LiveData<Lens> getLensById(int id){
return repo.getLendsById(id)
}
Activity
viewModel.getLensById(id = ).observe(this,new Observer{
@Override
void onChanged(Lens lens){
//TODO()
}
})
我正在开发我的第一个应用程序,我可以在 SQ Lite 数据库中添加、编辑、删除...对象。 到目前为止一切正常。还可以使用 LiveData 加载所有存储的对象。
当我想从我的数据库加载单个对象时,任何人都可以建议我,存储库中的代码应该是什么样子?
Dao 中的代码如下所示:
@Query("SELECT * FROM lens_table WHERE id = :lensId LIMIT 1")
Lens getLensById(int lensId);
我在存储库中尝试使用像这样的简单代码:
public Lens getLensById(int id) {
Lens lens = lensDao.getLensById(id);
}
但这不起作用 - 我认为问题是这应该在异步任务中完成,因为我用它来删除项目。
public void delete(Lens lens) {
new DeleteLensAsyncTask(lensDao).execute(lens);
}
private static class DeleteLensAsyncTask extends AsyncTask<Lens, Void, Void> {
private final LensDao lensDao;
private DeleteLensAsyncTask(LensDao lensDao) {
this.lensDao = lensDao;
}
@Override
protected Void doInBackground(Lens... lenses) {
lensDao.delete(lenses[0]);
return null;
}
}
这就是我开始纠结的地方 - 存储库中的方法应该是什么样子?
在 activity 中,分别在 ViewHolder 中,我正在使用从 activity.
的 onCreate 方法调用的代码public Lens getLensById(int id) {
return repository.getLensById(id);
}
非常感谢!
界面
@Query("SELECT * FROM lens_table WHERE id = :lensId LIMIT 1")
LiveData<Lens> getLensById(int lensId);
回购
public LiveData<Lens> getLensById(int id) {
return lensDao.getLensById(id);
}
视图模型
public LiveData<Lens> getLensById(int id){
return repo.getLendsById(id)
}
Activity
viewModel.getLensById(id = ).observe(this,new Observer{
@Override
void onChanged(Lens lens){
//TODO()
}
})