我正在使用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编写代码,它将变得一团糟。
从网站进行此类搜索的最佳方式是什么?
答案 0 :(得分:0)
在这种情况下,您可以使用Spring Data JPA规范。这有点棘手,请参考这些链接,你会有一个想法