我想要搜索的数据库例如一些搜索我有三个文本框 姓,名和性别 如果我输入有 一些名字,有些姓氏,男我想搜索所有的人那个特定的名字和性别,并显示它,我该如何做到这一点? 注:我只是新的春天和刚刚开始学习的感谢Spring MVC的 - 使用帕拉姆
控制器:
@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";
}
}
规格:
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[] {}));
};
}
}
谢谢我试着在规范中使用另一个代码,但它不工作,你能帮我吗?请参阅编辑 –
什么不适合你?你能发布“用户”和“学生”实体之间的映射吗? – Awnen