创建不同的pojo对象并保留在db中的通用方法

问题描述

我正在创建一个使用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);