Centralizes the commonality regarding binding of parameter values into
PreparedStatements as this logic is used in many places.
Ideally would like to move to the parameter handling as it is done in
the hql.ast package.
Method from org.hibernate.engine.ParameterBinder Detail: |
public static int bindNamedParameters(PreparedStatement ps,
QueryParameters queryParameters,
int start,
NamedParameterSource source,
SessionImplementor session) throws SQLException, HibernateException {
return bindNamedParameters( ps, queryParameters.getNamedParameters(), start, source, session );
}
|
public static int bindNamedParameters(PreparedStatement ps,
Map namedParams,
int start,
NamedParameterSource source,
SessionImplementor session) throws SQLException, HibernateException {
if ( namedParams != null ) {
// assumes that types are all of span 1
Iterator iter = namedParams.entrySet().iterator();
int result = 0;
while ( iter.hasNext() ) {
Map.Entry e = ( Map.Entry ) iter.next();
String name = ( String ) e.getKey();
TypedValue typedval = ( TypedValue ) e.getValue();
int[] locations = source.getNamedParameterLocations( name );
for ( int i = 0; i < locations.length; i++ ) {
if ( log.isDebugEnabled() ) {
log.debug( "bindNamedParameters() " +
typedval.getValue() + " - > " + name +
" [" + ( locations[i] + start ) + "]" );
}
typedval.getType().nullSafeSet( ps, typedval.getValue(), locations[i] + start, session );
}
result += locations.length;
}
return result;
}
else {
return 0;
}
}
|
public static int bindPositionalParameters(PreparedStatement st,
QueryParameters queryParameters,
int start,
SessionImplementor session) throws SQLException, HibernateException {
return bindPositionalParameters(
st,
queryParameters.getPositionalParameterValues(),
queryParameters.getPositionalParameterTypes(),
start,
session
);
}
|
public static int bindPositionalParameters(PreparedStatement st,
Object[] values,
Type[] types,
int start,
SessionImplementor session) throws SQLException, HibernateException {
int span = 0;
for ( int i = 0; i < values.length; i++ ) {
types[i].nullSafeSet( st, values[i], start + span, session );
span += types[i].getColumnSpan( session.getFactory() );
}
return span;
}
|
public static int bindQueryParameters(PreparedStatement st,
QueryParameters queryParameters,
int start,
NamedParameterSource source,
SessionImplementor session) throws SQLException, HibernateException {
int col = start;
col += bindPositionalParameters( st, queryParameters, col, session );
col += bindNamedParameters( st, queryParameters, col, source, session );
return col;
}
|