如何解决如何将像“ <”,““>”,“ =”小于,大于,等于这样的运算符作为参数传递给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);
如何将运算符(,=)也作为参数传递?
谢谢。
解决方法
如果在运行查询之前可以选择构造/连接字符串,则没有问题:
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 举报,一经查实,本站将立刻删除。