【问题标题】:How to handle the "ALL" using SQL query inside SPRING REST API?如何在 SPRING REST API 中使用 SQL 查询处理“ALL”?
【发布时间】:2019-05-18 08:57:58
【问题描述】:

我正在构建 REST API 以使用 Android 应用程序。 Android 应用程序具有下拉菜单(微调器)和日期选择器,允许选择参数。使用@Query (...) 注解处理请求并将其更改为 SQL (Oracle 11g) 查询。

当我想处理“所有”选项(选择所有选项)时,问题就开始了。

REST API 是 JAVA Spring Boot 和 Hibernate。 Android 应用程序发送带有参数的请求,响应是纯 JSON。如果用户选择 'ALL' 参数值是 999999(如果需要可以更改)。

所以看起来像:myurl/getinfo/2/4/999999/56

我尝试了许多选项:?1 发送所有条件,使用 % 作为参数值,编写方法将本地查询构建为字符串并使用 PreparedStatement 发送。没有任何效果。总是出错。

有人可以启发我,因为它通常应该是这样的吗?如何处理'ALL'作为参数发送以及如何通过Java Spring REST处理它?

提前致谢:-)

【问题讨论】:

    标签: java android sql spring rest


    【解决方案1】:

    可能是 Criteria Api 对此更好-您将获得管理限制的程序方式(sql 中的 where 子句)。 看看 turorial: https://www.tutorialspoint.com/hibernate/hibernate_criteria_queries.htm

    【讨论】:

    • 感谢您的建议。我阅读了教程,并且能够编写我需要的代码。再次感谢你:-)
    【解决方案2】:

    Criteria API 是处理这个问题的一个很好的选择(当你不想通过它过滤时,构造没有特定列的查询 - 这应该在你的 Java 代码中处理)。

    但是如果你想继续使用@Query,你可以将这个条件的计算委托给数据库,通过创建类似于这样的查询:

    where (999999 = ?1 or field1 = ?1) and (999999 = ?2 or field2 = ?2)
    

    这将导致查询 field1 = :param1 仅在 :param1 不是 999999 时计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-26
      • 2018-01-16
      • 2020-06-04
      • 1970-01-01
      • 2019-12-18
      • 2021-01-12
      • 2012-03-19
      • 2017-08-05
      相关资源
      最近更新 更多