【发布时间】:2018-10-04 17:20:58
【问题描述】:
我是使用 Room 功能的新手,我已经使用以下设置了我的 Dao
公共接口 ValleyDao {
@Query("SELECT * FROM event_filter ORDER BY filter_name ASC")
LiveData<List<EventFilter>> getAllEventsFilters();
@Query("SELECT * FROM event_filter LIMIT 1")
EventFilter[] getAnyEventFilter();
@Query("SELECT * FROM events ORDER BY event_millis ASC")
LiveData<List<Events>> getAllEvents();
@Query("SELECT * FROM events WHERE event_filter = :event_filter")
LiveData<List<Events>> getFilteredEvents(List<Events> event_filter);
@Query("SELECT * FROM events LIMIT 1")
Events[] getAnyEvent();
@Insert(onConflict = OnConflictStrategy.IGNORE)
void insertNewEvents(Events events);
@Insert(onConflict = OnConflictStrategy.IGNORE)
void insertNewEventFilters(EventFilter eventFilter);
@Delete
void deleteEvent(Events events);
@Query("DELETE FROM events")
void deleteAllEvents();
@Update
void update(Events... events);
}
给我问题的查询是查询:
@Query("SELECT * FROM events WHERE event_filter = :event_filter") LiveData> getFilteredEvents(List event_filter);
我在列中分配了一个数字过滤器,因此我可以对数据进行排序。我正在尝试获取该整数,以便可以在回收站视图中显示正确的项目。我不确定在 VeiwModeler 中放什么来限制它。到目前为止,我的 ViewModeler 如下所示:
public class ValleyViewModel extends AndroidViewModel {
private DataRepository mRepository;
private LiveData<List<Events>> mAllEvents;
private LiveData<List<EventFilter>> mAllEventsFilter;
public ValleyViewModel(@NonNull Application application) {
super(application);
mRepository = new DataRepository(application);
mAllEvents = mRepository.getmAllEvents();
mAllEventsFilter = mRepository.getmAllEventFilters();
}
LiveData<List<Events>> getAllEvents() {
return mAllEvents;
}
LiveData<List<EventFilter>> getmAllEventsFilter() {return mAllEventsFilter;}
public void insert(Events events) {
mRepository.insert(events);
}
public void deleteAll() {
mRepository.deleteAll();
}
public void deleteWord(Events events) {
mRepository.deleteWord(events);
}
public void update(Events events) {
mRepository.update(events);
}
}
如何在 ROOM 中使用 WHERE 条件?
【问题讨论】:
标签: java database android-room