Probabilmente è necessario eseguire alcune ristrutturazioni del payload prima di inserirlo comunque, quindi non ci dovrebbero essere problemi per eseguire una trasformazione utilizzando qualsiasi metodo in Camel per impostare il corpo alla corretta istruzione INSERT.
L'importante è quale tipo di struttura del carico utile abbia il messaggio in arrivo. Nel caso di base - è una stringa - dovrebbe essere abbastanza semplice
// In a Java bean/processor before the JDBC endpoint.
// Update: make sure to sanitize the payload from SQL injections if it contains user inputs or external data not generated by trusted sources.
exchange.getIn().setBody("INSERT INTO MYTABLE VALUES('" + exchange.getIn().getBody(String.class) + "', 'fixedValue', 1.0, 42)");
Nel caso in cui il messaggio contiene strutture dati complesse, questo codice sarà ovviamente più complessa, ma è più o meno allo stesso modo regolare applicazione genererà Query SQL.
L'esempio classpath si sta riferendo a
<jdbc:embedded-database id="testdb" type="DERBY">
<jdbc:script location="classpath:sql/init.sql"/>
</jdbc:embedded-database>
mostra semplicemente come testare la componente JDBC avviando un server di database incorporato (Apache Derby) e popolarlo con alcuni dati iniziali (SQL/init.sql file). Questa parte non fa realmente parte del componente jdbc di base, ma semplicemente nella documentazione per ottenere ed eseguire un esempio senza la necessità di configurare un server DB e impostare le proprietà di connessione JDBC.
Detto questo, è possibile utilizzare il componente SQL per scenari più complessi.
fonte
2012-05-28 21:57:42
@AndrewThompson ho cercato alcuni esempi, ma io non sono in grado di capirli. Non sono riuscito a trovare alcun specifico per l'inserimento del corpo del messaggio. –
@AndrewThompson Non ho capito l'esempio http://camel.apache.org/jdbc.html. Qui l'esempio di Spring è per me fonte di confusione. Non ho capito perché è l'impostazione del corpo come query SQL e di nuovo l'importazione di alcune query dal percorso classe. Non vi è alcun esempio di query di inserimento menzionato qui.
–
componente jdbc utilizza il corpo come origine della query SQL. Se si desidera passare i dati nel proprio corpo, considerare l'utilizzo di SQL (http://camel.apache.org/sql-component.html) o MyBatis (http: //camel.apache.org/mybatis.html) componente –