package org.skife.jdbi.v2;
import org.skife.jdbi.v2.tweak.ResultColumnMapper;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.skife.jdbi.v2.tweak.SQLLog;
import org.skife.jdbi.v2.tweak.StatementBuilder;
import org.skife.jdbi.v2.tweak.StatementCustomizer;
import org.skife.jdbi.v2.tweak.StatementLocator;
import org.skife.jdbi.v2.tweak.StatementRewriter;
import org.skife.jdbi.v2.util.SingleColumnMapper;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collections;
import java.util.Map;
public class Update extends SQLStatement<Update>
{
Update(Handle handle,
StatementLocator locator,
StatementRewriter statementRewriter,
StatementBuilder statementBuilder,
String sql,
ConcreteStatementContext ctx,
SQLLog log,
TimingCollector timingCollector,
Foreman foreman,
ContainerFactoryRegistry containerFactoryRegistry)
{
super(new Binding(), locator, statementRewriter, handle, statementBuilder, sql, ctx, log, timingCollector, Collections.<StatementCustomizer>emptyList(), foreman, containerFactoryRegistry);
}
public int execute()
{
try {
return this.internalExecute(new QueryResultMunger<Integer>() {
@Override
public Integer munge(Statement results) throws SQLException
{
return results.getUpdateCount();
}
});
}
finally {
cleanup();
}
}
public <GeneratedKeyType> GeneratedKeys<GeneratedKeyType> executeAndReturnGeneratedKeys(final ResultSetMapper<GeneratedKeyType> mapper, String columnName)
{
getConcreteContext().setReturningGeneratedKeys(true);
if (columnName != null && !columnName.isEmpty()) {
getConcreteContext().setGeneratedKeysColumnNames(new String[] { columnName } );
}
return this.internalExecute(new QueryResultMunger<GeneratedKeys<GeneratedKeyType>>() {
@Override
public GeneratedKeys<GeneratedKeyType> munge(Statement results) throws SQLException
{
return new GeneratedKeys<GeneratedKeyType>(mapper,
Update.this,
results,
getContext(),
getContainerMapperRegistry());
}
});
}
public <GeneratedKeyType> GeneratedKeys<GeneratedKeyType> executeAndReturnGeneratedKeys(final ResultSetMapper<GeneratedKeyType> mapper) {
return executeAndReturnGeneratedKeys(mapper, null);
}
public <GeneratedKeyType> GeneratedKeys<GeneratedKeyType> executeAndReturnGeneratedKeys(final ResultColumnMapper<GeneratedKeyType> mapper) {
return executeAndReturnGeneratedKeys(new SingleColumnMapper<GeneratedKeyType>(mapper), null);
}
public GeneratedKeys<Map<String, Object>> executeAndReturnGeneratedKeys()
{
return executeAndReturnGeneratedKeys(new DefaultMapper());
}
}