Class SQLExec

All Implemented Interfaces:
Serializable, Query

public class SQLExec extends IndirectQuery
A generic query based on raw SQL and featuring fluent API. While SQLExec can be used to select data (see execute(ObjectContext) ), it is normally used for updates, DDL operations, etc.
Since:
4.0
See Also:
  • Field Details

    • dataMapName

      protected String dataMapName
    • sqlBuffer

      protected StringBuilder sqlBuffer
    • params

      protected Map<String,Object> params
    • positionalParams

      protected List<Object> positionalParams
    • returnGeneratedKeys

      protected boolean returnGeneratedKeys
    • queryTimeout

      protected int queryTimeout
  • Constructor Details

    • SQLExec

      public SQLExec(String sql)
  • Method Details

    • query

      public static SQLExec query(String sql)
      Creates a query executing provided SQL run against default database.
    • query

      public static SQLExec query(String dataMapName, String sql)
      Creates a query executing provided SQL that performs routing based on the provided DataMap name.
    • getSql

      public String getSql()
    • append

      public SQLExec append(String sqlChunk)
      Appends a piece of SQL to the previously stored SQL template.
    • params

      public SQLExec params(String name, Object value)
    • params

      public SQLExec params(Map<String,?> parameters)
    • paramsArray

      public SQLExec paramsArray(Object... params)
      Initializes positional parameters of the query. Parameters are bound in the order they are found in the SQL template. If a given parameter name is used more than once, only the first occurrence is treated as "position", subsequent occurrences are bound with the same value as the first one. If template parameters count is different from the array parameter count, an exception will be thrown.

      Note that calling this method will reset any previously set *named* parameters.

    • paramsList

      public SQLExec paramsList(List<Object> params)
      Initializes positional parameters of the query. Parameters are bound in the order they are found in the SQL template. If a given parameter name is used more than once, only the first occurrence is treated as "position", subsequent occurrences are bound with the same value as the first one. If template parameters count is different from the list parameter count, an exception will be thrown.

      Note that calling this method will reset any previously set *named* parameters.

    • getParams

      public Map<String,Object> getParams()
      Returns a potentially immutable map of named parameters that will be bound to SQL.
    • getPositionalParams

      public List<Object> getPositionalParams()
      Returns a potentially immutable list of positional parameters that will be bound to SQL.
    • execute

      public QueryResult execute(ObjectContext context)
    • update

      public int update(ObjectContext context)
    • updateBatch

      public int[] updateBatch(ObjectContext context)
    • isReturnGeneratedKeys

      public boolean isReturnGeneratedKeys()
      Returns:
      returnGeneratedKeys flag value
      Since:
      4.1
    • returnGeneratedKeys

      public SQLExec returnGeneratedKeys(boolean returnGeneratedKeys)
      Flag indicating that generated keys should be returned by this query execution. Generated keys could be read via QueryResponse.currentList() method
      Parameters:
      returnGeneratedKeys - flag value
      Since:
      4.1
      See Also:
    • queryTimeout

      public SQLExec queryTimeout(int queryTimeout)
      Since:
      4.2
    • createReplacementQuery

      protected Query createReplacementQuery(EntityResolver resolver)
      Description copied from class: IndirectQuery
      Creates a substitute query. An implementor is free to provide an arbitrary replacement query.
      Specified by:
      createReplacementQuery in class IndirectQuery