Class BatchInsertJsonArray

  • All Implemented Interfaces:
    AdaptrisComponent, ComponentLifecycle, ComponentLifecycleExtension, ConnectedService, MessageEventGenerator, Service, StateManagedComponent

    @ComponentProfile(summary="Insert a JSON array into a database",
                      tag="service,json,jdbc",
                      since="3.6.5")
    public class BatchInsertJsonArray
    extends InsertJsonObjects
    Convenience service for inserting a JSON array into a database.

    This creates insert statements based on the contents of each JSON object inside the array. The actual insert statement will only be generated once based on the first JSON object in the array and executed the appropriate number of times.

     
     [
       { "firstname":"alice", "lastname":"smith", "dob":"2017-01-01" },
       { "firstname":"bob", "lastname":"smith", "dob":"2017-01-02" },
       { "firstname":"carol", "lastname":"smith", "dob":"2017-01-03" }
     ]
     
    will effectively execute the following statement INSERT INTO table (firstname,lastname,dob) VALUES (?,?,?) 3 times; batching as required using PreparedStatement.addBatch() / Statement.executeBatch().

    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"}'

    Since:
    3.6.5

    In the adapter configuration file this class is aliased as json-array-jdbc-batch-insert which is the preferred alternative to the fully qualified classname when building your configuration.

    • Constructor Detail

      • BatchInsertJsonArray

        public BatchInsertJsonArray()
    • Method Detail

      • accumulate

        protected static int accumulate​(int[] rc)
                                 throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getBatchWindow

        public java.lang.Integer getBatchWindow()
        Returns:
        the batchWindow
      • setBatchWindow

        public void setBatchWindow​(java.lang.Integer i)
        Set the batch window for operations.
        Parameters:
        i - the batchWindow to set; default is 1024 if not specified.