Class SQLExecutor

java.lang.Object
com.landawn.abacus.jdbc.SQLExecutor

public final class SQLExecutor extends Object
SQLExecutor is a simple sql/jdbc utility class. SQL is supported with different format:

 
  • INSERT INTO account (first_name, last_name, gui, last_update_time, create_time) VALUES (?, ?, ?, ?, ?)
  • INSERT INTO account (first_name, last_name, gui, last_update_time, create_time) VALUES (#{firstName}, #{lastName}, #{gui}, #{lastUpdateTime}, #{createTime})
  • INSERT INTO account (first_name, last_name, gui, last_update_time, create_time) VALUES (:firstName, :lastName, :gui, :lastUpdateTime, :createTime)
  • All these kinds of SQLs can be generated by SQLBuilder conveniently. Parameters with format of Object[]/List parameters are supported for parameterized SQL(id = ?). Parameters with format of Object[]/List/Map/Entity are supported for named parameterized SQL(id = :id). DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
    Here is sample of CRUD(create/read/update/delete):
    ========================================================================
     
     static final DataSource dataSource = JdbcUtil.createDataSource(...);
     static final SQLExecutor sqlExecutor = new SQLExecutor(dataSource);
     ...
     Account account = createAccount();
    
     // create
     String sql_insert = NE.insert(GUI, FIRST_NAME, LAST_NAME, LAST_UPDATE_TIME, CREATE_TIME).into(Account.class).sql();
     N.println(sql_insert);
     sqlExecutor.insert(sql_insert, account);
    
     // read
     String sql_selectByGUI = NE.selectFrom(Account.class, N.asSet(DEVICES)).where(L.eq(GUI, L.QME)).sql();
     N.println(sql_selectByGUI);
     Account dbAccount = sqlExecutor.findFirst(Account.class, sql_selectByGUI, account);
     assertEquals(account.getFirstName(), dbAccount.getFirstName());
    
     // update
     String sql_updateByLastName = NE.update(Account.class).set(FIRST_NAME).where(L.eq(LAST_NAME, L.QME)).sql();
     N.println(sql_updateByLastName);
     dbAccount.setFirstName("newFirstName");
     sqlExecutor.update(sql_updateByLastName, dbAccount);
    
     // delete
     String sql_deleteByFirstName = NE.deleteFrom(Account.class).where(L.eq(FIRST_NAME, L.QME)).sql();
     N.println(sql_deleteByFirstName);
     sqlExecutor.update(sql_deleteByFirstName, dbAccount);
    
     dbAccount = sqlExecutor.findFirst(Account.class, sql_selectByGUI, account);
     assertNull(dbAccount);
     
     
    ========================================================================

    If conn argument is null or not specified, SQLExecutor is responsible to get the connection from the internal DataSource, start and commit/roll back transaction for batch operations if needed, and close the connection finally. otherwise it's user's responsibility to do such jobs if conn is specified and not null.

    Transaction can be started:
     
     final SQLTransaction tran = sqlExecutor.beginTransaction(IsolationLevel.READ_COMMITTED);
    
     try {
         // sqlExecutor.insert(...);
         // sqlExecutor.update(...);
         // sqlExecutor.query(...);
    
         tran.commit();
     } finally {
         // The connection will be automatically closed after the transaction is committed or rolled back.
         tran.rollbackIfNotCommitted();
     }
     
     
    Spring Transaction is also supported and Integrated. If a method of this class is called where a Spring transaction is started with the DataSource inside this SQLExecutor, without Connection parameter specified, the Connection started the Spring Transaction will be used. Otherwise a Connection directly from the inside DataSource(Connection pool) will be borrowed and used. SQLExecutor is tread-safe.

    Since:
    0.8
    Author:
    Haiyang Li
    See Also:
    • Constructor Details

      • SQLExecutor

        public SQLExecutor(DataSource dataSource)
        Instantiates a new SQL executor.
        Parameters:
        dataSource -
        See Also:
        • JdbcUtil#createDataSource(String)
        • JdbcUtil#createDataSource(java.io.InputStream)
      • SQLExecutor

        public SQLExecutor(DataSource dataSource, JdbcSettings jdbcSettings)
        Instantiates a new SQL executor.
        Parameters:
        dataSource -
        jdbcSettings -
        See Also:
        • JdbcUtil#createDataSource(String)
        • JdbcUtil#createDataSource(java.io.InputStream)
      • SQLExecutor

        public SQLExecutor(DataSource dataSource, JdbcSettings jdbcSettings, com.landawn.abacus.util.SQLMapper sqlMapper)
        Instantiates a new SQL executor.
        Parameters:
        dataSource -
        jdbcSettings -
        sqlMapper -
        See Also:
        • JdbcUtil#createDataSource(String)
        • JdbcUtil#createDataSource(java.io.InputStream)
    • Method Details

      • create

        @Beta public static SQLExecutor create(String url, String user, String password)
        Parameters:
        url -
        user -
        password -
        Returns:
      • create

        @Beta public static SQLExecutor create(DataSource dataSource)
        Parameters:
        driverClass -
        url -
        user -
        password -
        Returns:
      • dataSource

        public DataSource dataSource()
        Returns:
      • jdbcSettings

        @Deprecated @Beta public JdbcSettings jdbcSettings()
        Deprecated.
        should not update the returned JdbcSettings
        Returns:
      • insert

        @SafeVarargs public final <ID> ID insert(String sql, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        statementSetter -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<ID> autoGeneratedKeyExtractor, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        statementSetter -
        autoGeneratedKeyExtractor -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(Connection conn, String sql, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        statementSetter -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        public final <ID> ID insert(Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • insert

        @SafeVarargs public final <ID> ID insert(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<ID> autoGeneratedKeyExtractor, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        statementSetter -
        autoGeneratedKeyExtractor -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
        See Also:
        • #batchInsert(Connection, String, StatementSetter, JdbcSettings, String, Object[])
      • batchInsert

        public <ID> List<ID> batchInsert(String sql, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(String sql, SQLExecutor.StatementSetter statementSetter, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        statementSetter -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(String sql, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        statementSetter -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<ID> autoGeneratedKeyExtractor, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        sql -
        statementSetter -
        autoGeneratedKeyExtractor -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(Connection conn, String sql, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        statementSetter -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(Connection conn, String sql, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchInsert

        public <ID> List<ID> batchInsert(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<ID> autoGeneratedKeyExtractor, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Type Parameters:
        ID -
        Parameters:
        conn -
        sql -
        statementSetter -
        autoGeneratedKeyExtractor -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(String sql, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        statementSetter -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(Connection conn, String sql, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        statementSetter -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • update

        @SafeVarargs public final int update(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
        See Also:
        • #batchUpdate(Connection, String, StatementSetter, JdbcSettings, Object[])
      • batchUpdate

        public int batchUpdate(String sql, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchUpdate

        public int batchUpdate(String sql, SQLExecutor.StatementSetter statementSetter, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        statementSetter -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchUpdate

        public int batchUpdate(String sql, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchUpdate

        public int batchUpdate(String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        statementSetter -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchUpdate

        public int batchUpdate(Connection conn, String sql, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchUpdate

        public int batchUpdate(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        statementSetter -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchUpdate

        public int batchUpdate(Connection conn, String sql, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • batchUpdate

        public int batchUpdate(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, List<?> parametersList) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parametersList -
        Returns:
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
        See Also:
        • #batchUpdate(Connection, String, StatementSetter, JdbcSettings, Object[])
      • exists

        @SafeVarargs public final boolean exists(String sql, Object... parameters)
        Parameters:
        sql -
        parameters -
        Returns:
        true, if successful
      • exists

        @SafeVarargs public final boolean exists(Connection conn, String sql, Object... parameters)
        Parameters:
        conn -
        sql -
        parameters -
        Returns:
        true, if successful
      • notExists

        @Beta @SafeVarargs public final boolean notExists(String sql, Object... parameters)
        Parameters:
        sql -
        parameters -
        Returns:
        true, if successful
      • notExists

        @Beta @SafeVarargs public final boolean notExists(Connection conn, String sql, Object... parameters)
        Parameters:
        conn -
        sql -
        parameters -
        Returns:
        true, if successful
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, String sql, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, Connection conn, String sql, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(String sql, Jdbc.RowMapper<T> rowMapper, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        public final <T> com.landawn.abacus.util.u.Optional<T> get(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        public final <T> com.landawn.abacus.util.u.Optional<T> get(String sql, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Connection conn, String sql, Jdbc.RowMapper<T> rowMapper, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Connection conn, String sql, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • get

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> get(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, String sql, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, Connection conn, String sql, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(String sql, Jdbc.RowMapper<T> rowMapper, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(String sql, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Connection conn, String sql, Jdbc.RowMapper<T> rowMapper, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        public final <T> T gett(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        public final <T> T gett(Connection conn, String sql, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • gett

        @SafeVarargs public final <T> T gett(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, String sql, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, Connection conn, String sql, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        parameters -
        Returns:
      • findFirst

        public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        parameters -
        Returns:
      • findFirst

        public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Just fetch the result in the 1st row. null is returned if no result is found. This method will try to convert the column value to the type of mapping entity property if the mapping entity property is not assignable from column value. Remember to add limit condition if big result will be returned by the query.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(String sql, Jdbc.RowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(String sql, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        jdbcSettings -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Connection conn, String sql, Jdbc.RowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        parameters -
        Returns:
      • findFirst

        public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        parameters -
        Returns:
      • findFirst

        public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Connection conn, String sql, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        jdbcSettings -
        parameters -
        Returns:
      • findFirst

        @SafeVarargs public final <T> com.landawn.abacus.util.u.Optional<T> findFirst(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.RowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Remember to add limit condition if big result will be returned by the query.
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Class<T> targetClass, String sql, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Class<T> targetClass, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Class<T> targetClass, Connection conn, String sql, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        parameters -
        Returns:
      • list

        public final <T> List<T> list(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        parameters -
        Returns:
      • list

        public final <T> List<T> list(Class<T> targetClass, Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Class<T> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(String sql, Jdbc.BiRowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(String sql, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        jdbcSettings -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Connection conn, String sql, Jdbc.BiRowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        parameters -
        Returns:
      • list

        public final <T> List<T> list(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        parameters -
        Returns:
      • list

        public final <T> List<T> list(Connection conn, String sql, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        rowMapper -
        jdbcSettings -
        parameters -
        Returns:
      • list

        @SafeVarargs public final <T> List<T> list(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • listAll

        @SafeVarargs public final <T> List<T> listAll(Class<T> targetClass, List<String> sqls, JdbcSettings jdbcSettings, Object... parameters)
        Execute the query in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sqls -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • listAll

        @SafeVarargs public final <T> List<T> listAll(Class<T> targetClass, List<String> sqls, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Execute the query in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sqls -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • listAll

        @SafeVarargs public final <T> List<T> listAll(List<String> sqls, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        sqls -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • listAll

        @SafeVarargs public final <T> List<T> listAll(List<String> sqls, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        sqls -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • queryForBoolean

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalBoolean queryForBoolean(String sql, Object... parameters)
        Query for boolean.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForChar

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalChar queryForChar(String sql, Object... parameters)
        Query for char.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForByte

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalByte queryForByte(String sql, Object... parameters)
        Query for byte.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForShort

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalShort queryForShort(String sql, Object... parameters)
        Query for short.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForInt

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalInt queryForInt(String sql, Object... parameters)
        Query for int.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForLong

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalLong queryForLong(String sql, Object... parameters)
        Query for long.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForFloat

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalFloat queryForFloat(String sql, Object... parameters)
        Query for float.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForDouble

        @SafeVarargs public final com.landawn.abacus.util.u.OptionalDouble queryForDouble(String sql, Object... parameters)
        Query for double.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForBigDecimal

        @SafeVarargs public final com.landawn.abacus.util.u.Nullable<BigDecimal> queryForBigDecimal(String sql, Object... parameters)
        Query for big decimal.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForString

        @SafeVarargs public final com.landawn.abacus.util.u.Nullable<String> queryForString(String sql, Object... parameters)
        Query for string.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForDate

        @SafeVarargs public final com.landawn.abacus.util.u.Nullable<Date> queryForDate(String sql, Object... parameters)
        Query for date.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForTime

        @SafeVarargs public final com.landawn.abacus.util.u.Nullable<Time> queryForTime(String sql, Object... parameters)
        Query for time.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForTimestamp

        @SafeVarargs public final com.landawn.abacus.util.u.Nullable<Timestamp> queryForTimestamp(String sql, Object... parameters)
        Query for timestamp.
        Parameters:
        sql -
        parameters -
        Returns:
      • queryForSingleResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, String sql, Object... parameters)
        Query for single result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        parameters -
        Returns:
      • queryForSingleResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Query for single result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        statementSetter -
        parameters -
        Returns:
      • queryForSingleResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Query for single result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • queryForSingleResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Query for single result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
      • queryForSingleResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, Connection conn, String sql, Object... parameters)
        Query for single result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        conn -
        sql -
        parameters -
        Returns:
      • queryForSingleResult

        public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Query for single result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        parameters -
        Returns:
      • queryForSingleResult

        public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Query for single result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        conn -
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • queryForSingleResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForSingleResult(Class<V> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Returns a Nullable describing the value in the first row/column if it exists, otherwise return an empty Nullable.
        Special note for type conversion for boolean or Boolean type: true is returned if the String value of the target column is "true", case insensitive. or it's an integer with value > 0. Otherwise, false is returned. Remember to add limit condition if big result will be returned by the query.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass - set result type to avoid the NullPointerException if result is null and T is primitive type "int, long. short ... char, boolean..".
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • queryForUniqueResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, String sql, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Query for unique result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • queryForUniqueResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Query for unique result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        statementSetter -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • queryForUniqueResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Query for unique result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • queryForUniqueResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Query for unique result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • queryForUniqueResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, Connection conn, String sql, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Query for unique result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        conn -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • queryForUniqueResult

        public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Query for unique result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        conn -
        sql -
        statementSetter -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • queryForUniqueResult

        public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Query for unique result.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass -
        conn -
        sql -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if two or more records are found.
      • queryForUniqueResult

        @SafeVarargs public final <V> com.landawn.abacus.util.u.Nullable<V> queryForUniqueResult(Class<V> targetClass, Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters) throws com.landawn.abacus.exception.DuplicatedResultException
        Returns a Nullable describing the value in the first row/column if it exists, otherwise return an empty Nullable. And throws DuplicatedResultException if more than one record found.
        Special note for type conversion for boolean or Boolean type: true is returned if the String value of the target column is "true", case insensitive. or it's an integer with value > 0. Otherwise, false is returned. Remember to add limit condition if big result will be returned by the query.
        Type Parameters:
        V - the value type
        Parameters:
        targetClass - set result type to avoid the NullPointerException if result is null and T is primitive type "int, long. short ... char, boolean..".
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
        Throws:
        com.landawn.abacus.exception.DuplicatedResultException - if more than one record found.
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(String sql, Object... parameters)
        Parameters:
        sql -
        parameters -
        Returns:
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Parameters:
        sql -
        statementSetter -
        parameters -
        Returns:
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(String sql, JdbcSettings jdbcSettings, Object... parameters)
        Parameters:
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Parameters:
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(String sql, Jdbc.ResultExtractor<T> resultExtractor, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.ResultExtractor<T> resultExtractor, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(String sql, Jdbc.ResultExtractor<T> resultExtractor, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        sql -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        jdbcSettings -
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.ResultExtractor<T> resultExtractor, JdbcSettings jdbcSettings, Object... parameters)
        Remember to close the ResultSet, Statement and Connection if the return type T is ResultSet or RowIterator. If T is RowIterator, call rowIterator.close() to close ResultSet, Statement and Connection.

        If T is ResultSet, call below codes to close ResultSet, Statement and Connection.
         
         Connection conn = null;
         Statement stmt = null;
        
         try {
             stmt = rs.getStatement();
             conn = stmt.getConnection();
         } catch (SQLException e) {
             // TODO.
         } finally {
             JdbcUtil.closeQuietly(rs, stmt, conn);
         }
         
         
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(Connection conn, String sql, Object... parameters)
        Parameters:
        conn -
        sql -
        parameters -
        Returns:
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Parameters:
        conn -
        sql -
        statementSetter -
        parameters -
        Returns:
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(Connection conn, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Parameters:
        conn -
        sql -
        jdbcSettings -
        parameters -
        Returns:
      • query

        @SafeVarargs public final com.landawn.abacus.util.DataSet query(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Parameters:
        conn -
        sql -
        statementSetter -
        jdbcSettings -
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(Connection conn, String sql, Jdbc.ResultExtractor<T> resultExtractor, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(Connection conn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.ResultExtractor<T> resultExtractor, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(Connection conn, String sql, Jdbc.ResultExtractor<T> resultExtractor, JdbcSettings jdbcSettings, Object... parameters)
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        jdbcSettings -
        parameters -
        Returns:
      • query

        @SafeVarargs public final <T> T query(Connection inputConn, String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.ResultExtractor<T> resultExtractor, JdbcSettings jdbcSettings, Object... parameters)
        Remember to close the ResultSet, Statement and Connection if the return type T is ResultSet or RowIterator. If T is RowIterator, call rowIterator.close() to close ResultSet, Statement and Connection.

        If T is ResultSet, call below codes to close ResultSet, Statement and Connection.
         
         Connection conn = null;
         Statement stmt = null;
        
         try {
             stmt = rs.getStatement();
             conn = stmt.getConnection();
         } catch (SQLException e) {
             // TODO.
         } finally {
             JdbcUtil.closeQuietly(rs, stmt, conn);
         }
         
         
        Type Parameters:
        T -
        Parameters:
        conn -
        sql -
        statementSetter -
        resultExtrator - Don't save/return ResultSet. It will be closed after this call.
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • queryAll

        @SafeVarargs public final com.landawn.abacus.util.DataSet queryAll(List<String> sqls, JdbcSettings jdbcSettings, Object... parameters)
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Parameters:
        sqls -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • queryAll

        @SafeVarargs public final com.landawn.abacus.util.DataSet queryAll(List<String> sqls, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Parameters:
        sqls -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> stream(Class<T> targetClass, String sql, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> stream(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        public final <T> com.landawn.abacus.util.stream.Stream<T> stream(Class<T> targetClass, String sql, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> stream(Class<T> targetClass, String sql, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sql -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> stream(String sql, Jdbc.BiRowMapper<T> rowMapper, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> stream(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> stream(String sql, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        sql -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • stream

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> stream(String sql, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Type Parameters:
        T -
        Parameters:
        sql -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • streamAll

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> streamAll(Class<T> targetClass, List<String> sqls, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sqls -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • streamAll

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> streamAll(Class<T> targetClass, List<String> sqls, SQLExecutor.StatementSetter statementSetter, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        targetClass -
        sqls -
        statementSetter -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • streamAll

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> streamAll(List<String> sqls, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        sqls -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • streamAll

        @SafeVarargs public final <T> com.landawn.abacus.util.stream.Stream<T> streamAll(List<String> sqls, SQLExecutor.StatementSetter statementSetter, Jdbc.BiRowMapper<T> rowMapper, JdbcSettings jdbcSettings, Object... parameters)
        Lazy execution, lazy fetching. No connection fetching/creating, no statement preparing or execution, no result fetching until @TerminalOp or @TerminalOpTriggered stream operation is called.
        Execute one or more queries in one or more data sources specified by jdbcSettings and merge the results. It's designed for partition.
        Type Parameters:
        T -
        Parameters:
        sqls -
        statementSetter -
        rowMapper -
        jdbcSettings -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Returns:
      • execute

        public final boolean execute(String sql, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Parameters:
        sql -
        parameters -
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • execute

        @SafeVarargs public final boolean execute(Connection conn, String sql, Object... parameters) throws com.landawn.abacus.exception.UncheckedSQLException
        Execute the sql with the specified parameters.
        Parameters:
        conn -
        sql -
        parameters - it can be Object[]/List for (named) parameterized query, or Map<String, Object>/Entity for named parameterized query. DO NOT use primitive array boolean[]/char[]/byte[]/short[]/int[]/long[]/float[]/double[] for passing multiple parameters.
        Throws:
        com.landawn.abacus.exception.UncheckedSQLException - the unchecked SQL exception
      • beginTransaction

        public SQLTransaction beginTransaction()
        Refer to beginTransaction(IsolationLevel, boolean, JdbcSettings).
        Returns:
        See Also:
      • beginTransaction

        public SQLTransaction beginTransaction(IsolationLevel isolationLevel)
        Refer to beginTransaction(IsolationLevel, boolean, JdbcSettings).
        Parameters:
        isolationLevel -
        Returns:
        See Also:
      • beginTransaction

        public SQLTransaction beginTransaction(boolean forUpdateOnly)
        Refer to beginTransaction(IsolationLevel, boolean, JdbcSettings).
        Parameters:
        forUpdateOnly -
        Returns:
        See Also:
      • beginTransaction

        public SQLTransaction beginTransaction(IsolationLevel isolationLevel, boolean forUpdateOnly)
        Refer to beginTransaction(IsolationLevel, boolean, JdbcSettings).
        Parameters:
        isolationLevel -
        forUpdateOnly -
        Returns:
        See Also:
      • beginTransaction

        public SQLTransaction beginTransaction(IsolationLevel isolationLevel, boolean forUpdateOnly, JdbcSettings jdbcSettings)
        If this method is called where a transaction is started by JdbcUtil.beginTransaction or in Spring with the same DataSource in the same thread, the Connection started the Transaction will be used here. That's to say the transaction started by JdbcUtil.beginTransaction or in Spring will have the final control on commit/roll back over the Connection.
        Otherwise a Connection directly from the specified DataSource(Connection pool) will be borrowed and used.
        Transactions started by SQLExecutor.beginTransaction won't be shared by JdbcUtil.beginTransaction or Spring.

        The connection opened in the transaction will be automatically closed after the transaction is committed or rolled back. DON'T close it again by calling the close method. Transaction can be started:
         
           final SQLTransaction tran = sqlExecutor.beginTransaction(IsolationLevel.READ_COMMITTED);
           try {
               // sqlExecutor.insert(...);
               // sqlExecutor.update(...);
               // sqlExecutor.query(...);
        
               tran.commit();
           } finally {
               // The connection will be automatically closed after the transaction is committed or rolled back.
               tran.rollbackIfNotCommitted();
           }
         
         
        Parameters:
        isolationLevel -
        forUpdateOnly -
        jdbcSettings -
        Returns:
      • doesTableExist

        public boolean doesTableExist(String tableName)
        Does table exist.
        Parameters:
        tableName -
        Returns:
        true, if successful
      • createTableIfNotExists

        public boolean createTableIfNotExists(String tableName, String schema)
        Returns true if succeed to create table, otherwise false is returned.
        Parameters:
        tableName -
        schema -
        Returns:
        true, if successful
      • dropTableIfExists

        public boolean dropTableIfExists(String tableName)
        Returns true if succeed to drop table, otherwise false is returned.
        Parameters:
        tableName -
        Returns:
        true, if successful
      • getColumnNameList

        public com.landawn.abacus.util.ImmutableList<String> getColumnNameList(String tableName)
        Gets the column name list.
        Parameters:
        tableName -
        Returns:
      • getConnection

        public Connection getConnection()
        Gets the connection.
        Returns:
      • closeConnection

        public void closeConnection(Connection conn)
        Parameters:
        conn -