问题
是否可以在运行时构建查询?
用例
@Query("SELECT * FROM playlist " +
"WHERE playlist_title LIKE '% :playlistTitle %' " +
"GROUP BY playlist_title " +
"ORDER BY playlist_title " +
"LIMIT :limit")
List<IPlaylist> searchPlaylists(String playlistTitle, int limit);
limit
部分是可选的。也就是说,它应该能够执行具有或不具有限制的相同查询。
更复杂的用例
在前面的情况下,可以制作两个静态查询,一个带有 limit 部分,一个没有带有 limit 部分,每次可以使用适当的查询。但是有时我们可能需要处理更复杂的情况,例如构建筛选器。
在这种情况下,与上一个示例不同,将有多个可选部分。对于一张书表,我们可能需要根据书籍所属的类别、作者姓名、价格范围、出版日期等进行过滤。几乎不可能制作包含所有这些部分组合的静态查询。