spring batch:查询小任务中存储过程结果的有效方法

问题描述 投票:0回答:1

我的目标是使用Spring Batch Tasklet中的自定义行映射器查询存储过程(SQL Server)的结果。

我正在使用Spring Boot(2.2.2.RELEASE版本)和Spring Batch(4.2.1.RELEASE)。

示例:

存储过程:

CREATE PROCEDURE storedProcName @numbers VARCHAR(max), @day DATE
AS
SET NOCOUNT ON;

SELECT something, something2, something3
FROM sometable
WHERE ids in (select value from string_split(@numbers,','))
AND day = @day

自定义行映射器:

public class CustomRowMapper implements RowMapper<CustomObject> {
    private static final String SOMETHING = "something";
    private static final String SOMETHING2 = "something2";
    private static final String SOMETHING3 = "something3";

    @Override
    public CustomObject mapRow(ResultSet resultSet, int i) throws SQLException {
        CustomObject customObject = new CustomObject();
        customObject.setSomething(resultSet.getString(SOMETHING));
        customObject.setSomething2(resultSet.getString(SOMETHING2));
        customObject.setSomething3(resultSet.getInt(SOMETHING3));

        return customObject;
    }
}

执行存储过程并查询结果:

SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
        .withProcedureName("storedProcName")
        .returningResultSet("test", new CustomRowMapper());
Map<String, Object> out = jdbcCall.execute(parameterSource);
List<CustomObject> customObjects = (List<CustomObject>) out.get("test");

效果很好,但是必须有更有效的方法吗?但是我没有发现任何有用的东西。

sql-server spring stored-procedures spring-batch spring-jdbc
1个回答
2
投票

必须有一种更有效的方法来做到这一点

© www.soinside.com 2019 - 2024. All rights reserved.