Apache Commons DbUtils - 1.0

Extension ID

com.castsoftware.java.commondbutils

What’s new?

See Apache Commmons DbUtils - 1.0 - Release Notes .

Description

This extension provides support for SQL query execution calls under Apache Commons DbUtils using Java language.

Supported Apache Commons DbUtils methods

All supported methods/properties below are used to execute SQL queries on their corresponding server. Other API methods are considered internally so that the query statements are correctly evaluated.

Method Parameter(s)

org.apache.commons.dbutils.QueryRunner.batch

Connection conn

String sql

Object[][] params

String sql

Object[][] params

org.apache.commons.dbutils.QueryRunner.execute

Connection conn

String sql

Object... params

final Connection conn

final String sql

final ResultSetHandler rsh

final Object... params

final String sql

final Object... params

final String sql

final ResultSetHandler rsh

final Object... params

org.apache.commons.dbutils.QueryRunner.insert

Connection conn

String sql

ResultSetHandler rsh

final Connection conn

final String sql

final ResultSetHandler rsh

final Object... params

final String sql

final ResultSetHandler rsh

final String sql

final ResultSetHandler rsh

final Object... params

org.apache.commons.dbutils.QueryRunner.insertBatch

Connection conn

String sql

ResultSetHandler rsh

Object[][] params

final String sql

final ResultSetHandler rsh

final Object[][] params

org.apache.commons.dbutils.QueryRunner.query

Connection conn

String sql

Object param

ResultSetHandler rsh

final Connection conn

final String sql

final Object[] params

final ResultSetHandler rsh

final Connection conn

final String sql

final ResultSetHandler rsh

final Connection conn

final String sql

final ResultSetHandler rsh

final Object... params

final String sql

final Object param

final ResultSetHandler rsh

final String sql

final Object[] params

final ResultSetHandler rsh

final String sql

final ResultSetHandler rsh

final String sql

final ResultSetHandler rsh

final Object... params

org.apache.commons.dbutils.QueryRunner.update

Connection conn

String sql

final Connection conn

final String sql

final Object param

final Connection conn

final String sql

final Object... params

final String sql

final String sql

final Object param

final String sql

final Object... params

org.apache.commons.dbutils.AsyncQueryRunner.batch

Connection conn

String sql

Object[][] params

String sql

Object[][] params

org.apache.commons.dbutils.AsyncQueryRunner.insert

Connection conn

String sql

ResultSetHandler rsh

final Connection conn

final String sql

final ResultSetHandler rsh

final Object... params

final String sql

final ResultSetHandler rsh

final String sql

final ResultSetHandler rsh

final Object... params

org.apache.commons.dbutils.AsyncQueryRunner.insertBatch

Connection conn

String sql

ResultSetHandler rsh

Object[][] params

final String sql

final ResultSetHandler rsh

final Object[][] params

org.apache.commons.dbutils.AsyncQueryRunner.query

final Connection conn

final String sql

final ResultSetHandler rsh

final Connection conn

final String sql

final ResultSetHandler rsh

final Object... params

final String sql

final ResultSetHandler rsh

final String sql

final ResultSetHandler rsh

final Object... params

org.apache.commons.dbutils.AsyncQueryRunner.update

Connection conn

String sql

final Connection conn

final String sql

final Object param

final Connection conn

final String sql

final Object... params

final String sql

final String sql

final Object param

final String sql

final Object... params

Compatibility

CAST Imaging Core release Supported
 ≥ 8.3.5 ✔️

Download and installation instructions

For Java applications using Apache Commons DbUtils, the extension will not currently be automatically installed by CAST Imaging Console.

For upgrade, if the Extension Strategy is not set to Auto update, you can manually install the extension using the Application - Extensions interface.

What results can you expect?

Objects

Icon Object type Description When is this object created ?
Apache Commons DbUtils Query An object is created for each SQL query found and resolved in an Apache Commons DbUtils CRUD method call
Apache Unknown Commons DbUtils Query An object is created for each SQL query or supported callback detected that could not be resolved correctly.

The following links will be created by the Apache Commons DbUtils extension, or by other extensions:

Link type Caller type Callee type Methods Supported
callLink Java Method All CRUD methods supported from Apache Commons DbUtils package (see above)
callLink Java Method All CRUD methods supported from Apache Commons DbUtils package (see above)
useLink Apache Commons DbUtils Query Created by SQL Analyzer when DDL source files are analyzed
callLink Apache Commons DbUtils Query
useLink Apache Commons DbUtils Query Created by Missing tables and procedures for JEE when the object is not analyzed
callLink Apache Commons DbUtils Query

Samples

txlcn-tc

From txlcn-tc\src\main\java\com\codingapi\txlcn\tc\jdbc\log\TransactionLogExecutor.java

public class TransactionLogExecutor {

    private JdbcTransactionDataSource jdbcTransactionDataSource;

    private LogExecutor logExecutor;

    private QueryRunner queryRunner = new QueryRunner();

    public TransactionLogExecutor(LogExecutor logExecutor,JdbcTransactionDataSource jdbcTransactionDataSource) {
        this.logExecutor = logExecutor;
        this.jdbcTransactionDataSource = jdbcTransactionDataSource;
    }

    public void saveLog() throws SQLException {
        JdbcTransaction jdbcTransaction = JdbcTransaction.current();
        //todo insert all
        for(TransactionLog transactionLog:jdbcTransaction.getTransactionLogs()) {
            String sql = logExecutor.insert(transactionLog);
            Connection connection = jdbcTransactionDataSource.getConnection();
            int row = queryRunner.execute(connection, sql, transactionLog.params());
            log.debug("insert-sql=>{},row:{},connection:{}", sql, row,connection);
        }
    }

    public void init(Connection connection) throws SQLException{
        try {
            String createSql = logExecutor.create();
            queryRunner.execute(connection, createSql);
            log.info("transaction log init success .");
        }catch (SQLException exception){
            log.warn("init transaction-log");
        }
    }

    public void delete(Connection connection)throws SQLException{
        List<Long> ids =  JdbcTransaction.current().logIds();
        String sql = logExecutor.delete(ids);
        int row = queryRunner.execute(connection,sql);
        log.debug("delete-sql=>{},row:{}",sql,row);
    }
}

and from txlcn-tc\src\main\java\com\codingapi\txlcn\tc\jdbc\log\MysqlLogExecutor.java

public class MysqlLogExecutor implements LogExecutor {

    @Override
    public String insert(TransactionLog transactionLog) {
        return "insert into `transaction_log`(`id`,`group_id`,`sql`,`time`,`flag`) values(?,?,?,?,?)";
    }

    @Override
    public String create() {
        return "\n" +
                "CREATE TABLE `transaction_log` (\n" +
                "  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ' ',\n" +
                "  `group_id` varchar(40) DEFAULT NULL,\n" +
                "  `sql` varchar(255) DEFAULT NULL,\n" +
                "  `time` bigint(20) DEFAULT NULL,\n" +
                "  `flag` int(1) DEFAULT NULL,\n" +
                "  PRIMARY KEY (`id`)\n" +
                ") ENGINE=InnoDB DEFAULT CHARSET=latin1;\n" +
                "\n" ;
    }

    @Override
    public String delete(List<Long> ids) {
        String id = Joiner.on(",").join(ids);
        return "delete from `transaction_log` where id in ("+id+")";
    }
}

Three Apache Commons DbUtils objects are created:

Limitations

  • Most of tracebacks in evaluating string with common exception AttributeError, TypeError, etc. and evaluation that returns an empty value are currently marked to create an unknown querty object.
  • Java Property Mapping is still not perfect.