android– 如何在运行时动态查询房间数据库?

android– 如何在运行时动态查询房间数据库?,第1张

概述问题是否有可能在运行时构造一个查询?用例@Query("SELECT*FROMplaylist"+"WHEREplaylist_titleLIKE'%:playlistTitle%'"+"GROUPBYplaylist_title"+"ORDERBYplaylist_title"+&quo

问题

是否有可能在运行时构造一个查询?

用例

@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);

限制部分是可选的.也就是说,它应该能够在有或没有限制的情况下执行相同的查询.

一个更复杂的用例

在前一种情况下,可以使用和不使用限制部分进行两个静态查询,并且每次都可以使用适当的一个.但有时我们可能不得不处理更复杂的情况,例如构建过滤器.

在这种情况下,与前面的示例不同,将有多个可选部分.对于书籍表,我们可能需要根据书籍所属的类别,作者姓名,价格范围,出版日期等进行过滤.使用这些部分的所有组合进行静态查询几乎是不可能的.

解决方法:

根据我的经验(简称)使用不可能的房间,而不是因为房间限制,而是由@CommonsWare隐含评论,sqlite的限制.您需要两个查询,因此DAO中有两个方法.

我会有类似的东西:

@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);@query("SELECT * FROM playList " +    "WHERE playList_Title liKE '% :playListTitle %' " +    "GROUP BY playList_Title " +    "ORDER BY playList_Title ")List<IPlayList> searchPlayLists(String playListTitle);

然后在其他地方你做旁路:

if (limit.isPresent()) {   return playListDao.searchPlayLists(Title, limit.get());} else {   return playListDao.searchPlayLists(Title);}

这是我现在能想到的最佳选择.

总结

以上是内存溢出为你收集整理的android – 如何在运行时动态查询房间数据库?全部内容,希望文章能够帮你解决android – 如何在运行时动态查询房间数据库?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1102575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存