public class SpringSQLSchemaUpdate extends AbstractSpringSchemaUpdate<Connection>
SchemaUpdate.
The sqlCommandList property is required.
Instances can be created succintly in Spring using the <dellroad-stuff:sql-update> custom XML element,
which works just like <dellroad-stuff:sql> except that it wraps the resulting SQLCommandList
as a delegate inside an instance of this class.
For example:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:dellroad-stuff="http://dellroad-stuff.googlecode.com/schema/dellroad-stuff"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://dellroad-stuff.googlecode.com/schema/dellroad-stuff
http://dellroad-stuff.googlecode.com/svn/wiki/schemas/dellroad-stuff-1.0.xsd">
<!-- Schema update to add the 'phone' column to the 'User' table -->
<dellroad-stuff:sql-update id="addPhone">ALTER TABLE User ADD phone VARCHAR(64)</dellroad-stuff:sql-update>
<!-- Schema update to run some complicated external SQL script -->
<dellroad-stuff:sql-update id="majorChanges" depends-on="addPhone" resource="classpath:majorChanges.sql"/>
<!-- more beans... -->
</beans>
A multi-statement SQL script is normally treated as a set of individual updates. For example:
<dellroad-stuff:sql-update id="renameColumn">
ALTER TABLE User ADD newName VARCHAR(64);
ALTER TABLE User SET newName = oldName;
ALTER TABLE User DROP oldName;
</dellroad-stuff:sql-update>
This will create three separate update beans named renameColumn-00001, renameColumn-00002, and
renameColumn-00003. You can disable this behavior by adding the attribute single-action="true",
in which case all three of the statements will be executed together in the same transaction and recorded under the name
renameColumn; this means that they must all complete successfully or you could end up with a partially
completed update.
Note that if the nested SQL script only contains one SQL statement, any single-action attribute is
ignored and the bean's given name (e.g., renameColumn) is always used as the name of the single update.
SQLCommandListbeanFactory, beanName| Constructor and Description |
|---|
SpringSQLSchemaUpdate() |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet()
Configures the update name and required predecessors based on the Spring bean's name and
BeanFactory dependencies. |
List<DatabaseAction<Connection>> |
getDatabaseActions() |
SQLCommandList |
getSQLCommandList() |
void |
setSQLCommandList(SQLCommandList sqlCommandList)
Configure the
SQLCommandList. |
setBeanFactory, setBeanName, setRequiredPredecessorsFromDependenciesgetName, getRequiredPredecessors, isSingleAction, setName, setRequiredPredecessors, setSingleAction, toStringpublic void afterPropertiesSet()
throws Exception
AbstractSpringSchemaUpdateBeanFactory dependencies.afterPropertiesSet in interface InitializingBeanafterPropertiesSet in class AbstractSpringSchemaUpdate<Connection>Exceptionpublic void setSQLCommandList(SQLCommandList sqlCommandList)
SQLCommandList. This is a required property.sqlCommandList - list of SQL statements that perform this updateDatabaseActionpublic SQLCommandList getSQLCommandList()
public List<DatabaseAction<Connection>> getDatabaseActions()
Copyright © 2020. All rights reserved.