我正在调用基于请求类型返回结果集中不同数据的过程。 为此,我使用stored-proc-outbound-gateway。 请求类型传递给过程,但在映射器内部不可用。基于有效负载的弹簧集成返回结果集
我可以使用ColumnMetaData来处理resultSet,但我更喜欢具有特定的请求类型映射器。 其他解决方案是具有尽可能多的请求类型的网关,但也许有更好的。
我可以根据有效载荷指定要使用哪个映射器:stored-proc-outbound-gateway?
我正在调用基于请求类型返回结果集中不同数据的过程。 为此,我使用stored-proc-outbound-gateway。 请求类型传递给过程,但在映射器内部不可用。基于有效负载的弹簧集成返回结果集
我可以使用ColumnMetaData来处理resultSet,但我更喜欢具有特定的请求类型映射器。 其他解决方案是具有尽可能多的请求类型的网关,但也许有更好的。
我可以根据有效载荷指定要使用哪个映射器:stored-proc-outbound-gateway?
那么,说实话,如果我是你,我真的会为特定类型制作单独的组件。在未来,逻辑可能会更复杂,并且修改特定功能比试图找出如何提出所有这些if..else
更容易。
不过你的要求是不同的......
正如你看到的只有一个可能钩你在那里 - RowMapper
注射特定的程序PARAM。
我可以建议像RoutingRowMapper
这样的解决方案,它会咨询一些ThreadLocal
变量来选择合适的RowMapper
委托。
这个想法是从AbstractRoutingDataSource
拿起。 Spring AMQP中还有类似SimpleRoutingConnectionFactory
的东西。
ThreadLocal
你可以在stored-proc-outbound-gateway
之前填充,这真的可以是你想要的类型。
另一个技巧可能是基于ResultSet
包含一个提示,其目标RowMapper
可供选择的过程的结果。
以任何方式您的任务只能通过复合RowMapper
来实现。 stored-proc-outbound-gateway
没有任何逻辑来解决,也不会。这不是它的责任。
谢谢澄清。 我已经提出了不同的请求类型处理器。 我同意,在RowMapper内部作出决定是更清洁的解决方案。 – Ving