gpt4 book ai didi

java - Spring - 使用存储过程时使用 simplejdbccall 进行批量更新

转载 作者:行者123 更新时间:2023-12-02 02:32:32 24 4
gpt4 key购买 nike

我正在使用 spring jdbc 模板,使用存储过程创建记录

public Long create(City $obj) {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(getJdbcTemplate().getDataSource()).withProcedureName(SP_ADD_UPDATE);
jdbcCall.declareParameters(new SqlOutParameter(ConstantUtil.RETUR_VAL, OracleTypes.BIGINT));
Map<String, Object> jdbcCallResult = jdbcCall.execute(new MapSqlParameterSource(populateParams($obj)));
return (Long) jdbcCallResult.get(ConstantUtil.RETUR_VAL);
}

参数

private static Map<String, Object> populateParams(City $obj) {

Map<String, Object> _params = new HashMap<String, Object>();
_params.put("CITYID", $obj.getCityId());
_params.put("CITYNAME", $obj.getCityName());
_params.put("USERID", $obj.getCurUser());
return _params;

}

如何在使用存储过程的同时使用 simpleJdbcCall 进行批量更新?

最佳答案

我找到了使用 jdbcTemplate 的解决方案:

public int insertBatch(final List<ExperimentUser> usersByExperiment)
throws Exception {

int[] insertedRows = getJdbcTemplate().batchUpdate("call myschema.myProc(?,?)",
new BatchPreparedStatementSetter() {

@Override
public void setValues(PreparedStatement ps, int i)
throws SQLException {
ExperimentUser experimentUser = usersByExperiment
.get(i);
ps.setInt(1, experimentUser.getExperimentId());
ps.setString(2, experimentUser.getUniqueCode());
}

@Override
public int getBatchSize() {
return usersByExperiment.size();
}
});
return insertedRows.length;
}

关于java - Spring - 使用存储过程时使用 simplejdbccall 进行批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com