/** * Add an SQL script to execute to initialize or populate the database. * @param script the script to execute * @return {@code this}, to facilitate method chaining */ public EmbeddedDatabaseBuilder addScript(String script) { this.databasePopulator.addScript(this.resourceLoader.getResource(script)); return this; }
@Bean @Autowired public DatabasePopulator databasePopulator() { final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.setContinueOnError(false); populator.addScript(new ClassPathResource("products.sql")); return populator; }
@Test public void scriptWithMultipleStatements() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-multiple.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithSelectStatements() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-select.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndNewlineSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-newline.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndLongSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-endings.sql")); databasePopulator.setSeparator("@@"); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndWhitespaceSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-whitespace.sql")); databasePopulator.setSeparator("/\n"); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndMultipleNewlineSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-multi-newline.sql")); databasePopulator.setSeparator("\n\n"); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithoutStatementSeparator() throws Exception { databasePopulator.setSeparator(ScriptUtils.EOF_STATEMENT_SEPARATOR); databasePopulator.addScript(resource("drop-users-schema.sql")); databasePopulator.addScript(resource("users-schema-without-separator.sql")); databasePopulator.addScript(resource("users-data-without-separator.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertUsersDatabaseCreated("Brannen"); }
@Test public void constructWithMultipleResourcesAndThenAddScript() { ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(script1, script2); assertEquals(2, databasePopulator.scripts.size()); databasePopulator.addScript(script3); assertEquals(3, databasePopulator.scripts.size()); }
@Before public void setUp() { ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); databasePopulator.addScript(new ClassPathResource("/org/springframework/batch/core/schema-drop-hsqldb.sql")); databasePopulator.addScript(new ClassPathResource("/org/springframework/batch/core/schema-hsqldb.sql")); databasePopulator.addScript(new ClassPathResource("/business-schema-hsqldb.sql")); databasePopulator.execute(this.dataSource); }
@Override public void migrate(Connection connection) throws Exception { ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.addScript(new ClassPathResource("org/cloudfoundry/identity/uaa/db/" + type + "/V1_5_2__initial_db.sql")); populator.setContinueOnError(true); populator.setIgnoreFailedDrops(true); populator.populate(connection); } }
@Test public void scriptWithSingleLineCommentsAndFailedDrop() throws Exception { databasePopulator.addScript(resource("db-schema-failed-drop-comments.sql")); databasePopulator.addScript(resource("db-test-data.sql")); databasePopulator.setIgnoreFailedDrops(true); DatabasePopulatorUtils.execute(databasePopulator, db); assertTestDatabaseCreated(); }
/** * https://jira.spring.io/browse/SPR-15896 * * @since 5.0 */ @Test public void scriptWithH2Alias() throws Exception { databasePopulator.addScript(usersSchema()); databasePopulator.addScript(resource("db-test-data-h2-alias.sql")); // Set statement separator to double newline so that ";" is not // considered a statement separator within the source code of the // aliased function 'REVERSE'. databasePopulator.setSeparator("\n\n"); DatabasePopulatorUtils.execute(databasePopulator, db); String sql = "select REVERSE(first_name) from users where last_name='Brannen'"; assertThat(jdbcTemplate.queryForObject(sql, String.class), equalTo("maS")); }
@Test public void setScriptsAndThenAddScript() { ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); assertEquals(0, databasePopulator.scripts.size()); databasePopulator.setScripts(script1, script2); assertEquals(2, databasePopulator.scripts.size()); databasePopulator.addScript(script3); assertEquals(3, databasePopulator.scripts.size()); }