Search in sources :

Example 1 with ParsedSql

use of org.springframework.jdbc.core.namedparam.ParsedSql in project camel by apache.

the class ElsqlProducer method processStreamList.

protected void processStreamList(final Exchange exchange, final String sql, final SqlParameterSource param) throws Exception {
    // spring JDBC to parse the SQL and build the prepared statement creator
    // this is what NamedJdbcTemplate does internally
    final ParsedSql parsedSql = NamedParameterUtils.parseSqlStatement(sql);
    final String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, param);
    final Object[] params = NamedParameterUtils.buildValueArray(parsedSql, param, null);
    final List<SqlParameter> declaredParameters = NamedParameterUtils.buildSqlParameterList(parsedSql, param);
    final PreparedStatementCreatorFactory pscf = new PreparedStatementCreatorFactory(sqlToUse, declaredParameters);
    final PreparedStatementCreator statementCreator = pscf.newPreparedStatementCreator(params);
    processStreamList(exchange, statementCreator, sqlToUse);
}
Also used : SqlParameter(org.springframework.jdbc.core.SqlParameter) PreparedStatementCreator(org.springframework.jdbc.core.PreparedStatementCreator) ParsedSql(org.springframework.jdbc.core.namedparam.ParsedSql) PreparedStatementCreatorFactory(org.springframework.jdbc.core.PreparedStatementCreatorFactory)

Example 2 with ParsedSql

use of org.springframework.jdbc.core.namedparam.ParsedSql in project spring-framework by spring-projects.

the class SqlUpdate method updateByNamedParam.

/**
	 * Generic method to execute the update given named parameters.
	 * All other update methods invoke this method.
	 * @param paramMap Map of parameter name to parameter object,
	 * matching named parameters specified in the SQL statement
	 * @return the number of rows affected by the update
	 */
public int updateByNamedParam(Map<String, ?> paramMap) throws DataAccessException {
    validateNamedParameters(paramMap);
    ParsedSql parsedSql = getParsedSql();
    MapSqlParameterSource paramSource = new MapSqlParameterSource(paramMap);
    String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource);
    Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, getDeclaredParameters());
    int rowsAffected = getJdbcTemplate().update(newPreparedStatementCreator(sqlToUse, params));
    checkRowsAffected(rowsAffected);
    return rowsAffected;
}
Also used : MapSqlParameterSource(org.springframework.jdbc.core.namedparam.MapSqlParameterSource) ParsedSql(org.springframework.jdbc.core.namedparam.ParsedSql)

Example 3 with ParsedSql

use of org.springframework.jdbc.core.namedparam.ParsedSql in project spring-framework by spring-projects.

the class SqlUpdate method updateByNamedParam.

/**
	 * Method to execute the update given arguments and
	 * retrieve the generated keys using a KeyHolder.
	 * @param paramMap Map of parameter name to parameter object,
	 * matching named parameters specified in the SQL statement
	 * @param generatedKeyHolder KeyHolder that will hold the generated keys
	 * @return the number of rows affected by the update
	 */
public int updateByNamedParam(Map<String, ?> paramMap, KeyHolder generatedKeyHolder) throws DataAccessException {
    validateNamedParameters(paramMap);
    ParsedSql parsedSql = getParsedSql();
    MapSqlParameterSource paramSource = new MapSqlParameterSource(paramMap);
    String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource);
    Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, getDeclaredParameters());
    int rowsAffected = getJdbcTemplate().update(newPreparedStatementCreator(sqlToUse, params), generatedKeyHolder);
    checkRowsAffected(rowsAffected);
    return rowsAffected;
}
Also used : MapSqlParameterSource(org.springframework.jdbc.core.namedparam.MapSqlParameterSource) ParsedSql(org.springframework.jdbc.core.namedparam.ParsedSql)

Example 4 with ParsedSql

use of org.springframework.jdbc.core.namedparam.ParsedSql in project spring-framework by spring-projects.

the class SqlQuery method executeByNamedParam.

/**
	 * Central execution method. All named parameter execution goes through this method.
	 * @param paramMap parameters associated with the name specified while declaring
	 * the SqlParameters. Primitive parameters must be represented by their Object wrapper
	 * type. The ordering of parameters is not significant since they are supplied in a
	 * SqlParameterMap which is an implementation of the Map interface.
	 * @param context contextual information passed to the {@code mapRow}
	 * callback method. The JDBC operation itself doesn't rely on this parameter,
	 * but it can be useful for creating the objects of the result list.
	 * @return a List of objects, one per row of the ResultSet. Normally all these
	 * will be of the same class, although it is possible to use different types.
	 */
public List<T> executeByNamedParam(Map<String, ?> paramMap, Map<?, ?> context) throws DataAccessException {
    validateNamedParameters(paramMap);
    ParsedSql parsedSql = getParsedSql();
    MapSqlParameterSource paramSource = new MapSqlParameterSource(paramMap);
    String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource);
    Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, getDeclaredParameters());
    RowMapper<T> rowMapper = newRowMapper(params, context);
    return getJdbcTemplate().query(newPreparedStatementCreator(sqlToUse, params), rowMapper);
}
Also used : MapSqlParameterSource(org.springframework.jdbc.core.namedparam.MapSqlParameterSource) ParsedSql(org.springframework.jdbc.core.namedparam.ParsedSql)

Aggregations

ParsedSql (org.springframework.jdbc.core.namedparam.ParsedSql)4 MapSqlParameterSource (org.springframework.jdbc.core.namedparam.MapSqlParameterSource)3 PreparedStatementCreator (org.springframework.jdbc.core.PreparedStatementCreator)1 PreparedStatementCreatorFactory (org.springframework.jdbc.core.PreparedStatementCreatorFactory)1 SqlParameter (org.springframework.jdbc.core.SqlParameter)1