问题描述
我正在创建一个使用spring数据jpa进行持久化的项目。我收到一个json字符串作为输入,我将其转换为相应的pojo以保存到数据库中。目前,我正在使用if来确定pojo和相应的存储库。有没有一种方法可以通用地处理此问题,而不是使用if。 请帮忙。预先感谢。
这是我的代码:
if(designation.equals("Teacher"))
{
Teacher teacher= mapper.readValue(jsonString,Teacher.class);
teacherRepository.save(teacher);
}
else if(designation.equals("Student"))
{
Student student= mapper.readValue(jsonString,Student.class);
studentRepository.save(student);
}
else if(designation.equals("Staff"))
{
Staff staff= mapper.readValue(jsonString,Staff.class);
staffRepository.save(staff);
}
解决方法
如果您拥有使用不同存储库的资源,则可能应该具有不同的REST端点(或所使用的任何对象)和正确的服务类。
摆脱if-else块的一种简单方法是使用地图
Map<String,Consumer<?>> map = new HashMap<>();
map.put("Teacher",(e) -> teacherRepository.save(mapper.readValue(e,Teacher.class))
});
您可以像使用它一样
map.get("Teacher").accept(jsonString);