2
私はPostgresの関数を呼び出すためにSimpleJdbcCallを使用してDAO持っていると:春:SimpleJdbcCall動的パラメータ
public final class AuthDAO extends UntypedActor {
private final ActorRef manager;
private final JdbcTemplate jdbcTemplate;
private final SimpleJdbcCall jdbcCall;
public AuthDAO(ActorRef manager) {
this.manager = manager;
jdbcTemplate = DBConfig.jdbcTemplate();
jdbcCall = new SimpleJdbcCall(jdbcTemplate)
.withSchemaName("auth")
.withCatalogName("public")
.withoutProcedureColumnMetaDataAccess();
}
public static Props create(ActorRef manager) {
return Props.create(AuthDAO.class, manager);
}
@Override
public void onReceive(Object o) throws Throwable {
if (o instanceof DBMessage) {
DBMessage message = (DBMessage) o;
jdbcCall.declareParameters(new SqlParameter("login", Types.VARCHAR));
Map<String, Object> response = jdbcCall
.withProcedureName(message.getProcedure())
.execute(message.getParams());
System.out.println(response.toString());
}
}
}
をしかし、今、私は明示的に呼び出すことにより、関数のパラメータに宣言する必要はjdbcCall.declareParameters()
それ以外のコードは動作しません。
関数パラメータの名前と型を動的に検出し、関数名だけを渡して異なる関数を呼び出す方法がありますか?