@@ -666,11 +666,11 @@ public <T> T query(String sql, PreparedStatementSetter pss, ResultSetExtractor<T
666666	}
667667
668668	public  <T > T  query (String  sql , Object [] args , int [] argTypes , ResultSetExtractor <T > rse ) throws  DataAccessException  {
669- 		return  query (sql , new   ArgTypePreparedStatementSetter (args , argTypes ), rse );
669+ 		return  query (sql , newArgTypePreparedStatementSetter (args , argTypes ), rse );
670670	}
671671
672672	public  <T > T  query (String  sql , Object [] args , ResultSetExtractor <T > rse ) throws  DataAccessException  {
673- 		return  query (sql , new   ArgPreparedStatementSetter (args ), rse );
673+ 		return  query (sql , newArgPreparedStatementSetter (args ), rse );
674674	}
675675
676676	public  void  query (PreparedStatementCreator  psc , RowCallbackHandler  rch ) throws  DataAccessException  {
@@ -682,11 +682,11 @@ public void query(String sql, PreparedStatementSetter pss, RowCallbackHandler rc
682682	}
683683
684684	public  void  query (String  sql , Object [] args , int [] argTypes , RowCallbackHandler  rch ) throws  DataAccessException  {
685- 		query (sql , new   ArgTypePreparedStatementSetter (args , argTypes ), rch );
685+ 		query (sql , newArgTypePreparedStatementSetter (args , argTypes ), rch );
686686	}
687687
688688	public  void  query (String  sql , Object [] args , RowCallbackHandler  rch ) throws  DataAccessException  {
689- 		query (sql , new   ArgPreparedStatementSetter (args ), rch );
689+ 		query (sql , newArgPreparedStatementSetter (args ), rch );
690690	}
691691
692692	public  <T > List <T > query (PreparedStatementCreator  psc , RowMapper <T > rowMapper ) throws  DataAccessException  {
@@ -843,11 +843,11 @@ public int update(String sql, PreparedStatementSetter pss) throws DataAccessExce
843843	}
844844
845845	public  int  update (String  sql , Object [] args , int [] argTypes ) throws  DataAccessException  {
846- 		return  update (sql , new   ArgTypePreparedStatementSetter (args , argTypes ));
846+ 		return  update (sql , newArgTypePreparedStatementSetter (args , argTypes ));
847847	}
848848
849849	public  int  update (String  sql , Object ... args ) throws  DataAccessException  {
850- 		return  update (sql , new   ArgPreparedStatementSetter (args ));
850+ 		return  update (sql , newArgPreparedStatementSetter (args ));
851851	}
852852
853853	public  int [] batchUpdate (String  sql , final  BatchPreparedStatementSetter  pss ) throws  DataAccessException  {
@@ -1232,6 +1232,28 @@ protected void handleWarnings(SQLWarning warning) throws SQLWarningException {
12321232		}
12331233	}
12341234
1235+ 	/** 
1236+ 	 * Create a new ArgPreparedStatementSetter using the args passed in. This method allows the 
1237+ 	 * creation to be overridden by sub-classes. 
1238+ 	 * @param args object array woth arguments 
1239+ 	 * @return the new ArgPreparedStatementSetter 
1240+ 	 */ 
1241+ 	protected  ArgPreparedStatementSetter  newArgPreparedStatementSetter (Object [] args ) {
1242+ 		return  new  ArgPreparedStatementSetter (args );
1243+ 	}
1244+ 
1245+ 	/** 
1246+ 	 * Create a new ArgTypePreparedStatementSetter using the args and argTypes passed in. 
1247+ 	 * This method allows the creation to be overridden by sub-classes. 
1248+ 	 * @param args object array woth arguments 
1249+ 	 * @param argTypes int array of SQLTypes for arguments 
1250+ 	 * @return the new ArgTypePreparedStatementSetter 
1251+ 	 */ 
1252+ 	protected  ArgTypePreparedStatementSetter  newArgTypePreparedStatementSetter (Object [] args , int [] argTypes ) {
1253+ 		return  new  ArgTypePreparedStatementSetter (args , argTypes );
1254+ 	}
1255+ 
1256+ 
12351257	/** 
12361258	 * Determine SQL from potential provider object. 
12371259	 * @param sqlProvider object that's potentially a SqlProvider 
0 commit comments