我正在使用Spring MyBatis在表中插入一行。问题是在我的h2数据库中我还没有创建表,我想动态地做它
这是我目前的春季环境配置
<sql id="CREATE_TABLE">
CREATE TABLE ENTITY(ENTITY_ID INT PRIMARY KEY, TITLE VARCHAR(255),DESCRIPTION VARCHAR(255) )
</sql>
<insert id="CREATE" parameterType="com.dao.entity.dto.EntityDaoDTO">
INSERT INTO
ENTITY
(ENTITY_ID, TITLE, DESCRIPTION)
VALUES
(#{entityId},#{title},#{description})
</insert>
如何指定在插入发生之前必须执行sql标记?
我通过maven运行h2作为java进程
<execution>
<id>start-h2</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
<configuration>
<name>start-h2-f2e</name>
<waitAfterLaunch>2</waitAfterLaunch>
<workingDir>../../../h2/sakila-h2-master/</workingDir>
<arguments>
<argument>java</argument>
<argument>-cp</argument>
<argument>h2-1.3.161.jar</argument>
<argument>org.h2.tools.Server</argument>
<argument>-ifExists</argument>
<argument>-tcp</argument>
<argument>-web</argument>
<argument>-tcpAllowOthers</argument>
</arguments>
</configuration>
</execution>
此致
答案 0 :(得分:1)
请参阅有关DB init here
的信息事实上你需要在春天添加这样的东西
<jdbc:initialize-database data-source="dataSource">
<jdbc:script location="classpath:database/scripts/init-db.ddl" />
</jdbc:initialize-database>
其中dataSource是要初始化的h2数据源。所有数据库结构创建和一些初始数据插入都可以在单独的DDL / SQL脚本中完成。
您只需在内存H2 DB的启动时执行它们。