繁体   English   中英

如何从表中获取与Spring Data中多个参数匹配的所有行?

[英]How to get all rows from table that matches multiple parametres in Spring Data?

我正在使用Java,Spring Boot和PostgreSQL
现在,我正尝试从网站发送带有多个参数的请求表,以在数据库中搜索与这些参数匹配的行。

像那样

http://localhost:8080/search?vtitle=&vcompany=Epam&vcity=Kiev&vlanguage=Java

我已经弄清楚了如何获得这样一个可靠的查询,但是有一个问题。

List<JobSite> allJobs = jobRepository.findByTitleContainingAndCompanyAndCityAndLanguage(searchForm.getVtitle(),
            searchForm.getVcompany(),
            searchForm.getVcity(),
            searchForm.getVlanguage());

    allJobs.sort(Comparator.comparing(JobSite::getTime).reversed());
    model.addAttribute("jobs", allJobs);
    return "index";

如果我不选择参数之一,由于findBy ...方法的工作原理,它将不会查询该行。

如果我将代码更改一点

public String submit(@RequestParam MultiValueMap<String, String> params, Model model) {

我会得到一些自由。 但是即使如此,我仍然找不到“自动生成”查询的方法,例如

SELECT * FROM table WHERE title = 1 AND company = 1 AND city = 1 AND language = 1 
SELECT * FROM table WHERE company = 1 AND city = 1 AND language = 1 
SELECT * FROM table WHERE city = 1 AND language = 1 
SELECT * FROM table WHERE language = 1 
SELECT * FROM table WHERE title = 1 AND city = 1 AND language = 1 

等等。

如果我自己用Spring编写代码,它将变得一团糟。

从网站进行此类搜索的最佳方法是什么?

在这种情况下,您可以使用Spring Data JPA Specification。 有点棘手,请参考这些链接,您会有所想法

1。 Spring Data JPA规范

  1. 先进的弹簧数据jpa规范

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM