#spring #jdbctemplate
Вопрос:
// NewParameterService.class
@Override
@Transactional(rollbackFor = Exception.class)
public NewParameter createNewParameter(NewParameterCreateRequest request) throws EntityNotFoundException {
// newParameterDao.createNewParameter(request, dataSetId) An exception was thrown
// but newParameterDao.createNewParameter(request, dataSetId) had inserted can not rollback
NewParameter newParameter = newParameterDao.createNewParameter(request, dataSetId);
newParameterValueDao.saveNewParameterValues(newParameter.getId(), values);
return newParameter;
}
//NewParameterDao.class
@Autowired
@Qualifier("paramterJdbcTemplate")
private JdbcTemplate paramterJdbcTemplate;
@Override
public NewParameter createNewParameter(NewParameterCreateRequest request, Long datasetId) {
String sql = "INSERT INTO new_parameters(name) VALUES (?,?,?,?,?) RETURNING id";
final Long newParameterId = paramterJdbcTemplate.queryForObject(sql,
new Object[]{request.getName()},
Long.class);
return NewParameter.builder()
.name(request.getName())
.id(newParameterId)
.build();
}
//paramterJdbcTemplateConfig.class
@Bean
public JdbcTemplate paramterJdbcTemplate() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:postgresql://127.0.0.1:15432/pipeline_schema");
dataSource.setUsername("postgres");
dataSource.setPassword("123456");
dataSource.setDriverClassName("org.postgresql.Driver");
return new JdbcTemplate(dataSource);
}
//newParameterValueDao.class
@Переопределить
общедоступные пустые значения saveNewParameterValues(длинный идентификатор параметра, значения списка) {
datasetsSchemaJdbcTemplate.batchUpdate(SQL_STUDENT_INSERT, новый
BatchPreparedStatementSetter() {
@Переопределение
общедоступных значений набора пустых значений(PreparedStatement PreparedStatement, int i) выдает
Исключение SQLException {
PreparedStatement.setLong(1, идентификатор параметра);
PreparedStatement.setString(2, значения.get(i).GetValue());
PreparedStatement.setBoolean(3, значения.get(i).isDefaultValue());
}
public int getBatchSize() {
return values.size();
}
});
}