微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将像“ <”,““>”,“ =”小于,大于,等于这样的运算符作为参数传递给springboot中的本机查询?

如何解决如何将像“ <”,““>”,“ =”小于,大于,等于这样的运算符作为参数传递给springboot中的本机查询?

例如,让我的查询如下所示:

String query="select * from table_name where column_name1 > ?1 and column_name2 < ?2";

@Query(value = query,nativeQuery = true)
public List<Object[]> getResult(String filterValue1,Integer filterValue2);

如何将运算符(,=)也作为参数传递?

我正在使用postgresql数据库

谢谢。

解决方法

如果在运行查询之前可以选择构造/连接字符串,则没有问题:

public String methodOne(String firstOperator,String secondOperator) {
return "select * from table_name where column_name1 " 
+ firstOperator + " ?1 and column_name2 "
 + secondOperator +" ?2"; 
}

如果使用SpringData存储库,则更为复杂。 您无法使用本机查询参数做很多事情,因为SpringData在查询字符串中寻找本机SQL运算符。但是您可以尝试使用LIKE运算符和内置函数(在SQL中,有时>,

(不是完全回答您的问题,而是)

可以忽略的条件

 @Query(value =
... AND column_name LIKE IIF(:myParam <> '%',:myParam,'%')
<skipped>

... repositoryMethod(@Param("myParam") String myParam);

IIF-MSSQL中的三元运算符函数,您可以在RDBMS中找到类似的内容

当您发送myParam ='actualValue'时,它将转换为

and column_name LIKE 'actualValue'

即column_name ='actualValue'

当您发送myParam ='%'时,它将转换为

and column_name LIKE '%'

即“和TRUE”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。