根据您提供的控制器代码,以下是可能的服务层代码示例:
@Service
public class TeacherService {
@Autowired
private TeacherRepository teacherRepository;
public Page<Teacher> getTeachersByDynamic(int pageIndex, int pageSize, String name, Integer age, String sex, String job) {
// 构建动态查询条件
Specification<Teacher> specification = (root, query, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
if (name != null && !name.isEmpty()) {
predicates.add(criteriaBuilder.like(root.get("name"), "%" + name + "%"));
}
if (age != null) {
predicates.add(criteriaBuilder.equal(root.get("age"), age));
}
if (sex != null && !sex.isEmpty()) {
predicates.add(criteriaBuilder.equal(root.get("sex"), sex));
}
if (job != null && !job.isEmpty()) {
predicates.add(criteriaBuilder.equal(root.get("job"), job));
}
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
};
// 构建分页请求
PageRequest pageRequest = PageRequest.of(pageIndex - 1, pageSize);
// 执行动态查询并返回结果
return teacherRepository.findAll(specification, pageRequest);
}
}
请确保在服务类上添加了@Service注解,并使用@Autowired注入了相关的仓库(repository)依赖。同时,在进行分页查询时,请确保传递正确的页面索引(pageIndex)和每页大小(pageSize)。
内容由零声教学AI助手提供,问题来源于学员提问




