Tenho uma classe gerada pelo Lombok usada para gerar informações para um Spring JDBC SimpleJdbcCall
. Aqui está o objeto:
@Data
@Builder
public class DatabaseCallInformation {
private String dbPackage;
private String dbProcedure;
private List<InParam> inParams;
private List<OutParam> outParams;
@Data
@Builder
public static class InParam {
private String paramName;
private int sqlType;
private String value;
}
@Data
@Builder
public static class OutParam {
private String paramName;
private int sqlType;
private SqlReturnType sqlReturnType;
private RowMapper<?> rowMapper;
}
O que eu quero fazer é poder chamar o construtor de algo assim:
DatabaseCallInformation result = DatabaseCallInformation.builder()
.dbPackage("MY_PACKAGE")
.dbProcedure("MY_PROCEDURE")
.inparam()
.paramName("ID")
.sqlType(Types.NUMBER)
.and()
// possibly more inparams
.outParam()
.paramName("result")
.sqlType(Types.VARCHAR)
.and()
// possibly more outParams
.build()
(Observação: as classes lombok têm métodos para enviar para a SqlParameter
e SqlOutParameter
que foram excluídos aqui).
Alguém pode me ajudar a obter a sintaxe correta? Os métodos inParam()
, outParam()
, e and()
agora são necessariamente necessários, eles são incluídos apenas para tentar mostrar o que eu quero fazer.
Jasão
DatabaseCallInformation
O construtor de terá um método que aceita aList<InParam>
e outro método que aceita aList<OutParam>
, então delegue aoInParam
construtor de eOutParam
ao construtor de para construir essas listas. Por exemplo: