@ComponentProfile(summary="Insert/Update a JSON object into a database", tag="service,json,jdbc", since="3.6.5") public class UpsertJsonObject extends JdbcMapUpsert
Creates an insert or update statement based on the contents of the JSON object.
{ "firstname":"carol", "lastname":"smith", "dob":"2017-01-03", "id": "1234"}
will effectively execute the following statement INSERT INTO table (firstname,lastname,dob,id) VALUES (?,?,?,?)
or
UPDATE table SET firstname=?, lastname=?, dob=? WHERE id = ?;
if 1234
already exists as a row.
Note that no parsing/assertion of the column names will be done, so if they are invalid SQL columns then it's going to be
fail. Additionally, nested JSON objects will be rendered as strings before being passed into the appropriate statement; so
{ "firstname":"alice", "lastname":"smith", "address": { "address" : "Buckingham Palace", "postcode":"SW1A 1AA"}}
would
still be 3 parameters, the address parameter will be '{ "address" : "Buckingham Palace", "postcode":"SW1A 1AA"}'
In the adapter configuration file this class is aliased as json-jdbc-upsert which is the preferred alternative to the fully qualified classname when building your configuration.
JdbcMapUpsert.SelectWrapper, JdbcMapUpsert.UpdateWrapper
JdbcMapInsert.BasicType, JdbcMapInsert.InsertWrapper, JdbcMapInsert.StatementParam, JdbcMapInsert.StatementWrapper
DEFAULT_ID_FIELD
log
CONFIRMATION_ID_KEY
Constructor and Description |
---|
UpsertJsonObject() |
Modifier and Type | Method and Description |
---|---|
void |
doService(AdaptrisMessage msg) |
NullConverter |
getNullConverter() |
void |
setNullConverter(NullConverter nc)
Specify the behaviour when a
NullNode is encountered. |
getIdField, handleUpsert, idField, setIdField, withId
buildStatementParam, closeJdbcService, columnBookend, getColumnBookendCharacter, getFieldMappings, getTable, handleInsert, initJdbcService, prepareService, setColumnBookendCharacter, setFieldMappings, setTable, startService, stopService, table, withColumnBookend, withMappings, withTable
applyTimeout, closeService, commit, createStatement, getConnection, getConnection, getStatementTimeout, initService, prepare, prepareStatement, prepareStatement, rollback, setConnection, setStatementTimeout, start, stop
changeState, close, continueOnFailure, createName, createQualifier, getContinueOnFail, getIsConfirmation, getIsTrackingEndpoint, getLookupName, getUniqueId, init, isBranching, isConfirmation, isTrackingEndpoint, requestClose, requestInit, requestStart, requestStop, rethrowServiceException, retrieveComponentState, setContinueOnFail, setIsConfirmation, setIsTrackingEndpoint, setLookupName, setUniqueId
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
continueOnFailure, isBranching, setUniqueId
createName, createQualifier, isConfirmation, isTrackingEndpoint
changeState, requestClose, requestInit, requestStart, requestStop, retrieveComponentState
getUniqueId
close, init
getLookupName
public void doService(AdaptrisMessage msg) throws ServiceException
ServiceException
public NullConverter getNullConverter()
public void setNullConverter(NullConverter nc)
NullNode
is encountered.nc
- the NullConverter to set, the default is effectively the string "null"
as returned by
NullNode#asText()