List<EmployeeModel> result = employeeRepository.findAll(new Specification<EmployeeModel>() {
@Override
public Predicate toPredicate(Root<EmployeeModel> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
if (StringUtils.isNoneBlank(model.getName())) {
list.add(cb.like(root.get("name").as(String.class), "%" + model.getName() + "%"));
}
if (model.getGender() != null) {
list.add(cb.equal(root.get("gender").as(GenderType.class), model.getGender()));
}
if (StringUtils.isNotBlank(model.getTelPhone())) {
list.add(cb.like(root.get("telPhone").as(String.class), "%" + model.getTelPhone() + "%"));
}
if (model.getDepartment() != null && model.getDepartment().getCode() != null) {
list.add(cb.equal(root.get("department").as(DepartmentModel.class), model.getDepartment()));
}
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
});
@Override
public Predicate toPredicate(Root<EmployeeModel> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
if (StringUtils.isNoneBlank(model.getName())) {
list.add(cb.like(root.get("name").as(String.class), "%" + model.getName() + "%"));
}
if (model.getGender() != null) {
list.add(cb.equal(root.get("gender").as(GenderType.class), model.getGender()));
}
if (StringUtils.isNotBlank(model.getTelPhone())) {
list.add(cb.like(root.get("telPhone").as(String.class), "%" + model.getTelPhone() + "%"));
}
if (model.getDepartment() != null && model.getDepartment().getCode() != null) {
list.add(cb.equal(root.get("department").as(DepartmentModel.class), model.getDepartment()));
}
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
});