Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为几个类(Java、Spring)创建commons方法?_Java_Spring_Methods - Fatal编程技术网

如何为几个类(Java、Spring)创建commons方法?

如何为几个类(Java、Spring)创建commons方法?,java,spring,methods,Java,Spring,Methods,我的控制器中有两个方法,我应该在每个控制器中插入它们。这些方法的代码根据控制器的不同而变化 例如,我有: private T1 variantDTO(Variant variant, T2 entity) { if (variant == null) variant = Variant.DEFAULT; switch (variant) { case ID: return T3.toIdDTO(entity)

我的控制器中有两个方法,我应该在每个控制器中插入它们。这些方法的代码根据控制器的不同而变化

例如,我有:

private T1 variantDTO(Variant variant, T2 entity) {
        if (variant == null) variant = Variant.DEFAULT;
        switch (variant) {
            case ID:
                return T3.toIdDTO(entity);
            default:
                return T3.toDTO(entity);
        }
    }

    private List<? extends T1> variantDTOList(Variant variant, List<T2> entityList) {
        if (variant == null) variant = Variant.DEFAULT;
        switch (variant) {
            case ID:
                return T3.toIdDTOList(entityList);
            default:
                return T3.toDTOList(entityList);
        }
    }
然后:

//...
case ID:
   return entityMapper.toIdDTOList(entityList);
//...
我不明白怎么做

你能帮我吗?我该怎么办?当我想改变这些方法时,我应该在几个控制器中进行。这很难

更新:

我尝试使用这些方法创建一个公共参数类,我希望在控制器中继承这些方法。但是我在方法(toidTo,toDTO,…)中得到错误

DTO:


使用继承怎么样?一个简单的方法是创建一个BaseController,并将其扩展到具有公共功能的其他控制器。或者创建一个实用程序来保存这段代码,并可以在任何地方使用。@RobbyCornelissen我添加了我试图做的事情。你能看见吗?我得到一个错误。@AshutoshSharma我添加了我试图做的事情。你能看见吗?我收到一个错误。@AlexanderLopatin您能添加一个最小的工作代码来复制这个吗?
//...
case ID:
   return entityMapper.toIdDTOList(entityList);
//...
public class VariantController<Abstract, Entity, Mapper> {

    @Autowired
    Mapper mapper;

    private Abstract variantDTO(Variant variant, Entity entity) {
        if (variant == null) variant = Variant.DEFAULT;
        switch (variant) {
            case ID:
                return mapper.toIdDTO(entity);
            default:
                return mapper.toDTO(entity);
        }
    }

    private List<? extends Abstract> variantDTOList(Variant variant, List<Entity> entityList) {
        if (variant == null) variant = Variant.DEFAULT;
        switch (variant) {
            case ID:
                return mapper.toIdDTOList(entityList);
            default:
                return mapper.toDTOList(entityList);
        }
    }
}
@RestController
@RequestMapping("/api/groupsparameters")
public class GroupParametersController {

    @Autowired
    private GroupParameterService groupParameterService;

    @Autowired
    private GroupParameterMapper groupParameterMapper;

    @GetMapping("/{id}")
    public ResponseEntity<? extends GroupParameterAbstract> get(@PathVariable Long id,
                                                                              @RequestParam(value = "variant", required = false) Variant variant) throws EntityNotFoundException {
        GroupParameter groupParameter = groupParameterService.findById(id);
        return new ResponseEntity<>(variantDTO(variant, groupParameter), HttpStatus.OK);
    }

    @GetMapping
    public ResponseEntity<List<? extends GroupParameterAbstract>> findAll(@RequestParam(value = "variant", required = false) Variant variant,
                                                                          @RequestParam(value = "search", required = false) String search) {

        List<GroupParameter> groupParameterList = groupParameterService.findAll();
        return new ResponseEntity<>(variantDTOList(variant, groupParameterList), HttpStatus.OK);
    }

    private GroupParameterAbstract variantDTO(Variant variant, GroupParameter entity) {
        if (variant == null) variant = Variant.DEFAULT;
        switch (variant) {
            case ID:
                return groupParameterMapper.toIdDTO(entity);
            default:
                return groupParameterMapper.toDTO(entity);
        }
    }

    private List<? extends GroupParameterAbstract> variantDTOList(Variant variant, List<GroupParameter> entityList) {
        if (variant == null) variant = Variant.DEFAULT;
        switch (variant) {
            case ID:
                return groupParameterMapper.toIdDTOList(entityList);
            default:
                return groupParameterMapper.toDTOList(entityList);
        }
    }

}
@Mapper(componentModel = "spring", uses = { TypeReportService.class})
public interface GroupParameterMapper {

    //GroupParatemerDTO
    GroupParameterDTO toDTO(GroupParameter groupParameter);
    List<GroupParameterDTO> toDTOList(List<GroupParameter> groupParameterList);

    //GroupParameterIdDTO
    @Mapping(target = "typeReportId", source = "typeReport.id")
    GroupParameterIdDTO toIdDTO(GroupParameter groupParameter);
    List<GroupParameterIdDTO> toIdDTOList(List<GroupParameter> groupParameterList);

    @Mapping(target = "id", ignore = true)
    @Mapping(target = "typeReport", source ="typeReportId", qualifiedByName = { "findTypeReportById" })
    GroupParameter fromIdDTO(GroupParameterIdDTO groupParameterIdDTO) throws EntityNotFoundException;

    //GroupParameter
    @Mapping(target = "id", ignore = true)
    @Mapping(target = "common", ignore = true)
    @BeanMapping(nullValuePropertyMappingStrategy = IGNORE)
    void fill(GroupParameter source, @MappingTarget GroupParameter target);

}
@Entity
@Data
public class GroupParameter {

    @Id
    @GeneratedValue(generator = ID_GENERATOR)
    private Long id;
    private String title;
    private boolean common;
    @ManyToOne
    @JoinColumn(name = "TYPE_REPORT_ID", nullable = false)
    private TypeReport typeReport;

}
@Data
public abstract class GroupParameterAbstract {

    private Long id;
    private String title;
    private boolean common;

}

public class GroupParameterDTO extends GroupParameterAbstract {

}

@Data
public class GroupParameterIdDTO extends GroupParameterAbstract {

    private Long typeReportId;

}