@Override
    public PreparedStatement create(Connection conn, String sql, StatementContext ctx) throws SQLException {
        if (ctx.isReturningGeneratedKeys()) {
            String[] columnNames = ctx.getGeneratedKeysColumnNames();
            if (columnNames != null && columnNames.length > 0) {
                return conn.prepareStatement(sql, columnNames);
            }
            return conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
        } else if (ctx.isConcurrentUpdatable()) {
            return conn.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
        } else {
            return conn.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        }
    }
Create a new DefaultStatementBuilder which will always create a new PreparedStatement from
the Connection

@param conn Used to prepare the statement
@param sql  Translated SQL statement
@param ctx  Unused

@return a new PreparedStatement
core/src/main/java/org/jdbi/v3/core/statement/DefaultStatementBuilder.java