Spring集成jdbc数组更新查询拼写表达式
Spring integration jdbc array update query spel expression
我正在尝试为我的 JdbcPollingChannelAdapter
创建一个 'update-query',工作流程如下:
- Select 来自数据库的 500 条类型 A 记录
- 用最后读取的记录(位置 500 处的)的值更新另一个 table 中的 1 行
但我无法解决这个问题,因为我一直在尝试使用 spring-el 来查找值。
通过调试,我达到了JdbcPollingChannelAdapter
executeUpdateQuery
方法,
void executeUpdateQuery(Object obj) {
SqlParameterSource updateParameterSource = this.sqlParameterSourceFactory.createParameterSource(obj);
this.jdbcOperations.update(this.updateSql, updateParameterSource);
}
其中 Object obj
是一个包含 500 条 A 类型记录的 ArrayList
这是我的最佳搭配:
UPDATE LAST_EVENT_READ SET SEQUENCE=:#root[499].sequence, EVENT_DATE=:#[499].eventDate
谁能帮帮我?
P.S。类型 A 具有序列和事件日期属性
我建议您使用自定义 SqlParameterSourceFactory
并且已经不依赖 SpEL:
public class CustomSqlParameterSourceFactory implements SqlParameterSourceFactory {
@Override
public SqlParameterSource createParameterSource(Object input) {
List<?> objects = (List<?>) input;
return new BeanPropertySqlParameterSource(objects.get(objects.size() - 1));
}
}
将其注入 JdbcPollingChannelAdapter.setUpdateSqlParameterSourceFactory()
并已在 UPDATE 语句中使用简单属性:
UPDATE LAST_EVENT_READ SET SEQUENCE=:sequence, EVENT_DATE=:eventDate
我正在尝试为我的 JdbcPollingChannelAdapter
创建一个 'update-query',工作流程如下:
- Select 来自数据库的 500 条类型 A 记录
- 用最后读取的记录(位置 500 处的)的值更新另一个 table 中的 1 行
但我无法解决这个问题,因为我一直在尝试使用 spring-el 来查找值。
通过调试,我达到了JdbcPollingChannelAdapter
executeUpdateQuery
方法,
void executeUpdateQuery(Object obj) {
SqlParameterSource updateParameterSource = this.sqlParameterSourceFactory.createParameterSource(obj);
this.jdbcOperations.update(this.updateSql, updateParameterSource);
}
其中 Object obj
是一个包含 500 条 A 类型记录的 ArrayList
这是我的最佳搭配:
UPDATE LAST_EVENT_READ SET SEQUENCE=:#root[499].sequence, EVENT_DATE=:#[499].eventDate
谁能帮帮我?
P.S。类型 A 具有序列和事件日期属性
我建议您使用自定义 SqlParameterSourceFactory
并且已经不依赖 SpEL:
public class CustomSqlParameterSourceFactory implements SqlParameterSourceFactory {
@Override
public SqlParameterSource createParameterSource(Object input) {
List<?> objects = (List<?>) input;
return new BeanPropertySqlParameterSource(objects.get(objects.size() - 1));
}
}
将其注入 JdbcPollingChannelAdapter.setUpdateSqlParameterSourceFactory()
并已在 UPDATE 语句中使用简单属性:
UPDATE LAST_EVENT_READ SET SEQUENCE=:sequence, EVENT_DATE=:eventDate