假设我有一个对象
class Person {
String firstName;
String lastName;
... other fields...
}
和包含
的数据库@Entity
class DatabaseTable {
String firstName;
String lastName;
... other unrelated fields from person...
}
现在在我的Dao,我有
@Query("SELECT * FROM DatabaseTable WHERE " +
" firstName = :firstName AND lastName = :lastName")
List<DatabaseTable> getAll(String firstName, String lastName);
我有要查询DatabaseTable的列表。
Person("Apple", "Kohn", ...)
Person("Benny", "Lorie", ...)
Person("Cindy", "May", ...)
...
我如何有效地提取数据库表?对我名单中的每个人打电话都是不对的。
编辑:
我想知道如何使用单个查询来检索结果列表。
我知道引擎盖下房间使用ContentValue来循环实体列表。 有没有办法让我们创建自己的contentValue来传递到Room?
以下是可能的吗?
getAllWithPairs( List<String> firstNames, List<String> lastNames);
答案 0 :(得分:0)
在 WHERE 语句的第一部分之后添加 AND ,您可以附加其他 WHERE 逻辑。
@Query("SELECT * FROM content WHERE timestamp >= :timeframe AND feedType = :feedType ORDER BY qualityScore DESC")
fun getMainContent(timeframe: Date, feedType: FeedType): DataSource.Factory<Int, Content>
答案 1 :(得分:0)
如果我正确理解了您的问题,那么您正在致电
List<DatabaseTable> getAll(String firstName, String lastName);
一次存储数据库中的每个人。我认为您正在寻找的是:
@Query("SELECT * FROM DatabaseTable")
List<DatabaseTable> getAll();
这应该为您提供每个人的表-DatabaseTable
对于问题的编辑部分,请尝试以下操作:
@Query("SELECT * FROM DatabaseTable WHERE
firstName IN (:firstNames) AND secondName IN (:lastNames)")
getAllWithPairs(List<String> firstNames, List<String> lastNames);