use of org.springframework.jdbc.core.SqlParameter in project spring-framework by spring-projects.
the class SqlQueryTests method testNamedParameterInListQuery.
@Test
public void testNamedParameterInListQuery() throws SQLException {
given(resultSet.next()).willReturn(true, true, false);
given(resultSet.getInt("id")).willReturn(1, 2);
given(resultSet.getString("forename")).willReturn("rod", "juergen");
given(connection.prepareStatement(SELECT_ID_FORENAME_WHERE_ID_IN_LIST_1, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY)).willReturn(preparedStatement);
class CustomerQuery extends MappingSqlQuery<Customer> {
public CustomerQuery(DataSource ds) {
super(ds, SELECT_ID_FORENAME_WHERE_ID_IN_LIST_2);
setResultSetType(ResultSet.TYPE_SCROLL_SENSITIVE);
declareParameter(new SqlParameter("ids", Types.NUMERIC));
compile();
}
@Override
protected Customer mapRow(ResultSet rs, int rownum) throws SQLException {
Customer cust = new Customer();
cust.setId(rs.getInt(COLUMN_NAMES[0]));
cust.setForename(rs.getString(COLUMN_NAMES[1]));
return cust;
}
public List<Customer> findCustomers(List<Integer> ids) {
Map<String, Object> params = new HashMap<>();
params.put("ids", ids);
return executeByNamedParam(params);
}
}
CustomerQuery query = new CustomerQuery(dataSource);
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
List<Customer> cust = query.findCustomers(ids);
assertEquals("We got two customers back", cust.size(), 2);
assertEquals("First customer id was assigned correctly", cust.get(0).getId(), 1);
assertEquals("First customer forename was assigned correctly", cust.get(0).getForename(), "rod");
assertEquals("Second customer id was assigned correctly", cust.get(1).getId(), 2);
assertEquals("Second customer forename was assigned correctly", cust.get(1).getForename(), "juergen");
verify(preparedStatement).setObject(1, 1, Types.NUMERIC);
verify(preparedStatement).setObject(2, 2, Types.NUMERIC);
verify(resultSet).close();
verify(preparedStatement).close();
verify(connection).close();
}
use of org.springframework.jdbc.core.SqlParameter in project spring-framework by spring-projects.
the class SqlQueryTests method testQueryWithoutEnoughParams.
@Test
public void testQueryWithoutEnoughParams() {
MappingSqlQuery<Integer> query = new MappingSqlQuery<Integer>() {
@Override
protected Integer mapRow(ResultSet rs, int rownum) throws SQLException {
return rs.getInt(1);
}
};
query.setDataSource(dataSource);
query.setSql(SELECT_ID_WHERE);
query.declareParameter(new SqlParameter(COLUMN_NAMES[0], COLUMN_TYPES[0]));
query.declareParameter(new SqlParameter(COLUMN_NAMES[1], COLUMN_TYPES[1]));
query.compile();
thrown.expect(InvalidDataAccessApiUsageException.class);
query.execute();
}
use of org.springframework.jdbc.core.SqlParameter in project camel by apache.
the class BatchCallableStatementCreatorFactory method createParams.
private List<SqlParameter> createParams() {
List<SqlParameter> params = new ArrayList<>();
for (Object parameter : template.getParameterList()) {
if (parameter instanceof InputParameter) {
InputParameter inputParameter = (InputParameter) parameter;
params.add(new SqlParameter(inputParameter.getName(), inputParameter.getSqlType()));
} else {
throw new UnsupportedOperationException("Only IN parameters supported by batch!");
}
}
return params;
}
use of org.springframework.jdbc.core.SqlParameter in project camel by apache.
the class BatchCallableStatementCreatorFactory method addParameter.
public void addParameter(CallableStatement callableStatement, Map batchRow) throws SQLException {
int i = 1;
for (SqlParameter parameter : getSqlParameterList()) {
StatementCreatorUtils.setParameterValue(callableStatement, i, parameter, batchRow.get(parameter.getName()));
i++;
}
}
use of org.springframework.jdbc.core.SqlParameter in project musiccabinet by hakko.
the class JdbcLastFmDao method setLastFmGroups.
@Override
public void setLastFmGroups(List<LastFmGroup> lastFmGroups) {
jdbcTemplate.update("truncate music.lastfmgroup_import");
String sql = "insert into music.lastfmgroup_import (group_name) values (?)";
BatchSqlUpdate batchUpdate = new BatchSqlUpdate(jdbcTemplate.getDataSource(), sql);
batchUpdate.setBatchSize(1000);
batchUpdate.declareParameter(new SqlParameter("group_name", Types.VARCHAR));
for (LastFmGroup group : lastFmGroups) {
batchUpdate.update(new Object[] { group.getName() });
}
batchUpdate.flush();
jdbcTemplate.execute("select music.update_lastfmgroup()");
}
Aggregations