我想使用一个RESTendpoint,将查询参数(qp1、qp2、qp3的组合)传递给它,例如:
http://localhost:8080/..../my-rest-endpoint?qp1=abc or
http://localhost:8080/..../my-rest-endpoint?qp2=123 or
http://localhost:8080/..../my-rest-endpoint?qp1=abc&qp2=123 or
...
为此,我定义了RESTendpoint,如下所示:
@GetMapping("/my-rest-endpoint")
public List<MyEntity> getMyEntities(WebRequest webrequest) {
Map<String, String[]> params = webrequest.getParameterMap();
String qp1 = params.containsKey("qp1") ? params.get("qp1")[0] : null;
Long qp2 = params.containsKey("qp2") ? Long.valueOf(params.get("qp2")[0]) : null;
String qp3 = params.containsKey("qp3") ? params.get("qp3")[0] : null;
List<WebfitVehicleContract> result = webfitVehicleContractRepository.findByQp1AndQp2AndQp3(qp1, qp2, qp3);
return result;
}
List<MyEntity> findByQp1AndQp2AndQp3(@Nullable String qp1, @Nullable Long qp2, @Nullable String qp3);
http://localhost:8080/..../my-rest-endpoint?qp2=123
看起来查询生成是:...其中qp1=null,qp2=123,qp3=null
我想要实现的是,只调用URL中存在的那些查询参数,只调用那些应该构建查询的参数。
如果调用只使用qp1 http://localhost:8080/..../my-rest-endpoint?qp1=abc
干杯
由于参数可以为空,请将存储库方法更改为或
而不是和
List<MyEntity> findByQp1OrQp2OrQp3(@Nullable String qp1, @Nullable Long qp2, @Nullable String qp3);
SpringDataJpa中 Specification怎样使用in查询 实体类Menu.java如下 想通过roles属性做in查询,代码如下 错误如下: Parameter value [com.appmtce.pojo.entity.role.Role@20f81e2a] did not match expected type [java.util.Collection (n/a)] 我的S
问题内容: 将表名作为参数放入SQL查询的安全方法是什么?您不能使用PreparedStatement将表名作为参数。可以使用Statement连接字符串以执行具有动态表名称的查询,但是不建议这样做,因为存在SQL注入的风险。最好的方法是什么? 问题答案: 我将尝试解决设计问题,因此您不必动态设置表名。如果无法做到这一点,那么我将进行一种设计,在该设计中,您管理可用表的列表,并且用户从中选择一个表
将表名作为参数放入SQL查询的安全方法是什么?不能使用PreparedStatement将表名作为参数。使用语句串联字符串以执行具有动态表名的查询是可能的,但不建议这样做,因为存在SQL注入的风险。最好的方法是什么?
我试图在Spring Data JPA存储库中实现一个自定义方法。
我现在的问题是在同一个endpoint请求中添加多个新列,如果我的if子句变得疯狂,我相信足够多的代码不会对其他团队成员友好地阅读。 谁能建议如何在spring boot应用程序上实现这个动态查询部分。 我的控制器代码片段如下所示:
问题内容: 我使用Slick 1.0.0-RC1。我对表对象有以下定义: 我需要一个简单的查询,该查询从数据库中选择8行: 输出为: 如果我摆脱方法: 那么输出是: 所以我的问题是:当Slick的查询对象使用method构造时,为什么会生成一个子查询? PS如果可以关联,则将MySql驱动程序与所有这些一起使用 问题答案: 有一个简短的答案,一个很长的答案。简短的是:子查询在那里,因为到目前为止没