Java 在mybatis中注入sql

Java 在mybatis中注入sql,java,spring,mybatis,Java,Spring,Mybatis,我使用Spring MyBatis在表中插入一行。问题是,在我的h2数据库中,我还没有创建表,我想动态地创建它 这是我当前的spring上下文配置 <sql id="CREATE_TABLE"> CREATE TABLE ENTITY(ENTITY_ID INT PRIMARY KEY, TITLE VARCHAR(255),DESCRIPTION VARCHAR(255) ) </sql> <insert id="CREATE" parameterTyp

我使用Spring MyBatis在表中插入一行。问题是,在我的h2数据库中,我还没有创建表,我想动态地创建它

这是我当前的spring上下文配置

<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>


创建表实体(实体ID INT主键,TITLE VARCHAR(255),DESCRIPTION VARCHAR(255))
插入
实体
(实体标识、标题、说明)
价值观
(#{entityId}、#{title}、#{description})

如何指定在插入之前必须执行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>

start-h2
预集成测试
开始
start-h2-f2e
2.
../../h2/sakila-h2-master/
JAVA
-cp
h2-1.3.161.jar
org.h2.tools.Server
-如果存在
-tcp
-网
-其他
关于

请参见关于DB init

事实上,你需要在你的弹簧上添加这样的东西

<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:database/scripts/init-db.ddl" />
</jdbc:initialize-database>

其中dataSource是要初始化的h2数据源。所有数据库结构创建和一些初始数据插入都可以在单独的DDL/SQL脚本中完成


您只需在启动时为内存中的H2 DB执行它们。

我想说,您需要在启动时执行init script ddl来创建DB结构,而不是在insert调用中添加检查。从未使用过该ddl脚本,知道它应该在哪里吗?我只是用maven将h2作为java进程运行,看看编辑后的问题