2017-02-14 2 views
0

Ich benutze Spring MyBatis, um eine Zeile in eine Tabelle einzufügen. Das Problem ist, dass in meiner h2 Datenbank ich nicht noch die Tabelle erstellen, und ich möchte, dass es im laufenden Betrieb tuninject sql in mybatis

dies ist meine aktuelle Frühjahr Kontextkonfiguration

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

Wie kann ich tun, um anzugeben, dass SQL-Tag ausgeführt werden muss, bevor das Einfügen geschieht?

ich bin läuft h2 als Java-Prozess durch Maven

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

Grüße

+0

Ich würde sagen, Sie brauchen init-Skript-ddl am Start ausgeführt werden, DB-Struktur zu erstellen, anstatt die Schecks in der einfügen Anruf hinzufügen. – StanislavL

+0

hat dieses ddl-script nie benutzt, keine idee wo es sein sollte? Ich laufe einfach den h2 als Java-Prozess mit Maven, schaue dir die bearbeitete Frage an – paul

Antwort

1

Siehe über DB init here

In der Tat müssen Sie Ihren Frühling so etwas wie dieses

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

wobei dataSource die h2-Datenquelle ist, die ich sein soll nitialisiert. Die gesamte DB-Strukturerstellung und einige anfängliche Dateneinfügungen könnten in separaten DDL/SQL-Skripten durchgeführt werden.

Sie führen sie nur beim Start für den Speicher H2 DB aus.