I want to search something from database example i have three textfields First Name , Last Name and Gender if i input there Some Firstname , Some Lastname , Male I want to search all the people with that certain name and gender and display it how do I do this? Note: I am just new to Spring and just started learning thanks
Controller:
@RequestMapping(value = "/student/search", method = RequestMethod.GET)
public String searchStudent(@Param("name") String name, @Param("type") String type, Map<String, Object> model) {
Map<String, String> params = new HashMap<String, String>();
params.put("name", name);
params.put("type", gender);
model.put("students",studentRepository.findAll(StudentSpecification.search(params)));
return "/students/list";
}
}
Specification:
public static Specification<Student> search(final Map<String, String> params) {
return (root, query, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<Predicate>();
params.forEach((k, v) -> {
if (StringUtils.equals(k, "name")) {
if (StringUtils.isNotBlank(v)) {
Predicate hasFirstName =
criteriaBuilder.like(root.join("user").<String>get("firstName"), "%" + v + "%");
Predicate hasLastName =
criteriaBuilder.like(root.join("user").<String>get("lastName"), "%" + v + "%");
predicates.add(criteriaBuilder.or(hasFirstName, hasLastName));
}
}
});
return criteriaBuilder.and(predicates.toArray(new Predicate[] {}));
};
}
}