diff --git a/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java b/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java index 6006d2e3d09..cb9ec9f0cbc 100644 --- a/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java +++ b/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java @@ -35,8 +35,8 @@ import org.springframework.util.StringUtils; /** * {@code JdbcTestUtils} is a collection of JDBC related utility functions * intended to simplify standard database testing scenarios. - * - *
As of Spring 3.2, {@code JdbcTestUtils} supersedes {@link SimpleJdbcTestUtils}. + * + *
As of Spring 3.1.3, {@code JdbcTestUtils} supersedes {@link SimpleJdbcTestUtils}. * * @author Thomas Risberg * @author Sam Brannen @@ -50,11 +50,9 @@ public class JdbcTestUtils { /** * Count the rows in the given table. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableName name of the table to count rows in * @return the number of rows in the table - * @since 3.2 */ public static int countRowsInTable(JdbcTemplate jdbcTemplate, String tableName) { return jdbcTemplate.queryForInt("SELECT COUNT(0) FROM " + tableName); @@ -62,38 +60,31 @@ public class JdbcTestUtils { /** * Count the rows in the given table, using the provided {@code WHERE} clause. - * *
If the provided {@code WHERE} clause contains text, it will be prefixed * with {@code " WHERE "} and then appended to the generated {@code SELECT} * statement. For example, if the provided table name is {@code "person"} and * the provided where clause is {@code "name = 'Bob' and age > 25"}, the * resulting SQL statement to execute will be * {@code "SELECT COUNT(0) FROM person WHERE name = 'Bob' and age > 25"}. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableName the name of the table to count rows in * @param whereClause the {@code WHERE} clause to append to the query * @return the number of rows in the table that match the provided * {@code WHERE} clause - * @since 3.2 */ public static int countRowsInTableWhere(JdbcTemplate jdbcTemplate, String tableName, String whereClause) { String sql = "SELECT COUNT(0) FROM " + tableName; - if (StringUtils.hasText(whereClause)) { sql += " WHERE " + whereClause; } - return jdbcTemplate.queryForInt(sql); } /** * Delete all rows from the specified tables. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableNames the names of the tables to delete from * @return the total number of rows deleted from all specified tables - * @since 3.2 */ public static int deleteFromTables(JdbcTemplate jdbcTemplate, String... tableNames) { int totalRowCount = 0; @@ -109,10 +100,8 @@ public class JdbcTestUtils { /** * Drop the specified tables. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableNames the names of the tables to drop - * @since 3.2 */ public static void dropTables(JdbcTemplate jdbcTemplate, String... tableNames) { for (String tableName : tableNames) { @@ -125,12 +114,9 @@ public class JdbcTestUtils { /** * Execute the given SQL script. - * *
The script will typically be loaded from the classpath. There should * be one statement per line. Any semicolons will be removed. - * *
Do not use this method to execute DDL if you expect rollback. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param resourceLoader the resource loader with which to load the SQL script * @param sqlResourcePath the Spring resource path for the SQL script @@ -138,45 +124,39 @@ public class JdbcTestUtils { * exception in the event of an error * @throws DataAccessException if there is an error executing a statement * and {@code continueOnError} is {@code false} - * @since 3.2 */ public static void executeSqlScript(JdbcTemplate jdbcTemplate, ResourceLoader resourceLoader, String sqlResourcePath, boolean continueOnError) throws DataAccessException { + Resource resource = resourceLoader.getResource(sqlResourcePath); executeSqlScript(jdbcTemplate, resource, continueOnError); } /** * Execute the given SQL script. - * *
The script will typically be loaded from the classpath. Statements * should be delimited with a semicolon. If statements are not delimited with * a semicolon then there should be one statement per line. Statements are * allowed to span lines only if they are delimited with a semicolon. - * *
Do not use this method to execute DDL if you expect rollback. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param resource the resource to load the SQL script from * @param continueOnError whether or not to continue without throwing an * exception in the event of an error * @throws DataAccessException if there is an error executing a statement * and {@code continueOnError} is {@code false} - * @since 3.2 */ public static void executeSqlScript(JdbcTemplate jdbcTemplate, Resource resource, boolean continueOnError) throws DataAccessException { + executeSqlScript(jdbcTemplate, new EncodedResource(resource), continueOnError); } /** * Execute the given SQL script. - * *
The script will typically be loaded from the classpath. There should * be one statement per line. Any semicolons will be removed. - * *
Do not use this method to execute DDL if you expect rollback.
- *
* @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations
* @param resource the resource (potentially associated with a specific encoding)
* to load the SQL script from
@@ -184,7 +164,6 @@ public class JdbcTestUtils {
* exception in the event of an error
* @throws DataAccessException if there is an error executing a statement
* and {@code continueOnError} is {@code false}
- * @since 3.2
*/
public static void executeSqlScript(JdbcTemplate jdbcTemplate, EncodedResource resource, boolean continueOnError)
throws DataAccessException {
@@ -192,7 +171,6 @@ public class JdbcTestUtils {
if (logger.isInfoEnabled()) {
logger.info("Executing SQL script from " + resource);
}
-
long startTime = System.currentTimeMillis();
List Statements should be delimited with a semicolon. If statements are not delimited with
* a semicolon then there should be one statement per line. Statements are allowed to span
* lines only if they are delimited with a semicolon.
List.
- *
* @param script the SQL script
- * @param delim character delimiting each statement — typically a ';'
- * character
+ * @param delim character delimiting each statement — typically a ';' character
* @param statements the list that will contain the individual statements
*/
public static void splitSqlScript(String script, char delim, List