可以使用IN关键字和数组绑定参数来处理List of Strings的情况。
例如,假设有一个表格Book,其中有一个列genres,它可以有多个值。我们要查询所有genres列表中包含特定值的图书。
先定义一个查询:
SELECT * FROM Book WHERE genres IN ?;
然后在SQLDelight接口中定义:
data class AllBooksInGenres(
val genres: List<String>
)
@Query("SELECT * FROM Book WHERE genres IN ?")
fun getAllBooksInGenres(genres: List<String>): Flow<List<Book>>
最后,在调用时,需要将List of Strings参数传递给IN关键字,例如:
val genresList = listOf("Mystery", "Thriller")
val books = database.bookQueries.getAllBooksInGenres(genresList).executeAsList()