在mybatis

时间:2017-02-14 14:03:45

标签: java spring mybatis

我正在使用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>

此致

1 个答案:

答案 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的启动时执行它们。