spring-data-jpa 我想在Sping Boot 控制器中创建一个搜索过滤器,它需要6个参数,参数值可能为空,那么如何编写一个数据JPA查询?

j0pj023g  于 2022-11-10  发布在  Spring
关注(0)|答案(3)|浏览(82)

就像我有一个页面,其中显示的数据,如名字,中间名,姓氏,地址,城市,州,国家,年龄,工资。
有一个过滤器实现,有4个字段,如城市,年龄,工资,国家。现在我必须在 Spring 启动控制器,采取所有4个字段作为输入参数,并从数据库中使用Spring Data JPA查找数据。
但我的问题是,我想有时只按工资过滤数据,有时按城市、州过滤数据,有时同时使用所有4个参数。
请帮我一把,先谢谢了

m0rkklqb

m0rkklqb1#

测试参数是否为空:

"where (:name is null or name = :name) and (:city is null or city = :city)"
u4vypkhs

u4vypkhs2#

我建议使用JPA规范,要了解更多关于规范代码的信息,这里是我关于stackoverflow的线程
如果您想坚持使用JPA,那么下面的查询可以帮助您

where (:field1 is null or table.field1 = :field1) 
and (:field2 is null or table.field2 = :field2)
...
...
...

说明:上面的代码将检查参数是否为null,否则返回true与列进行比较。

6za6bjd0

6za6bjd03#

您可以使用以下子句修改Query,其中您可以在存储库中编写查询,并且可以在where子句中添加条件因此,这将按预期方式工作
@Query(value =“从用户中选择用户用户WHERE((:名称为空)OR(用户名=:名称))AND((:城市为空)OR(用户城市=:城市)))

相关问题