use of io.vertigo.database.sql.statement.SqlParameter in project vertigo by KleeGroup.
the class AbstractSqlDataBaseManagerTest method testBatchInserts.
@Test
public void testBatchInserts() throws Exception {
final SqlConnectionProvider sqlConnectionProvider = dataBaseManager.getConnectionProvider(SqlDataBaseManager.MAIN_CONNECTION_PROVIDER_NAME);
final String sql = INSERT_INTO_MOVIE_VALUES;
final List<Movie> movies = Movies.bondMovies();
// --prepare data
final List<List<SqlParameter>> batch = new ArrayList<>();
for (final Movie movie : movies) {
final List<SqlParameter> sqlParameters = Arrays.asList(SqlParameter.of(Long.class, movie.getId()), SqlParameter.of(String.class, movie.getTitle()), SqlParameter.of(Double.class, movie.getFps()), SqlParameter.of(BigDecimal.class, movie.getIncome()), SqlParameter.of(Boolean.class, movie.getColor()), SqlParameter.of(Date.class, movie.getReleaseDate()), SqlParameter.of(LocalDate.class, movie.getReleaseLocalDate()), SqlParameter.of(Instant.class, movie.getReleaseInstant()), SqlParameter.of(DataStream.class, movie.getIcon()));
batch.add(sqlParameters);
}
final SqlConnection connection = sqlConnectionProvider.obtainConnection();
final OptionalInt result;
try {
final SqlStatementBuilder sqlStatementBuilder = SqlStatement.builder(sql);
for (final Movie movie : movies) {
sqlStatementBuilder.bind("movie", Movie.class, movie).nextLine();
}
result = dataBaseManager.executeBatch(sqlStatementBuilder.build(), connection);
connection.commit();
} finally {
connection.release();
}
// ---
if (result.isPresent()) {
Assert.assertEquals(movies.size(), result.getAsInt());
}
final List<Integer> countMovie = executeQuery(Integer.class, "select count(*) from movie", 1);
Assert.assertEquals(movies.size(), countMovie.get(0).intValue());
}
use of io.vertigo.database.sql.statement.SqlParameter in project vertigo by KleeGroup.
the class SqlDataBaseManagerImpl method executeBatch.
/**
* {@inheritDoc}
*/
@Override
public OptionalInt executeBatch(final SqlStatement sqlStatement, final SqlConnection connection) throws SQLException {
Assertion.checkNotNull(sqlStatement);
Assertion.checkNotNull(connection);
// ---
try (final PreparedStatement statement = sqlStatementDriver.createStatement(sqlStatement.getSqlQuery(), connection)) {
for (final List<SqlParameter> parameters : sqlStatement.getSqlParametersForBatch()) {
sqlStatementDriver.setParameters(statement, parameters, connection);
statement.addBatch();
}
return traceWithReturn(sqlStatement.getSqlQuery(), tracer -> doExecuteBatch(statement, tracer));
} catch (final WrappedSqlException e) {
throw e.getSqlException();
}
}
use of io.vertigo.database.sql.statement.SqlParameter in project vertigo by KleeGroup.
the class SqlStatementDriver method setParameters.
// ------------------ Set values on statement ------------------------------//
void setParameters(final PreparedStatement statement, final List<SqlParameter> parameters, final SqlConnection connection) throws SQLException {
// -----
for (int index = 0; index < parameters.size(); index++) {
final SqlParameter parameter = parameters.get(index);
final Class javaDataType = parameter.getDataType();
final Class sqlDataType = sqlMapper.getSqlType(javaDataType);
connection.getDataBase().getSqlMapping().setValueOnStatement(statement, index + 1, sqlDataType, sqlMapper.toSql(javaDataType, parameter.getValue()));
}
}
Aggregations