Example usage for org.springframework.jdbc.core.metadata TableParameterMetaData getSqlType

List of usage examples for org.springframework.jdbc.core.metadata TableParameterMetaData getSqlType

Introduction

In this page you can find the example usage for org.springframework.jdbc.core.metadata TableParameterMetaData getSqlType.

Prototype

public int getSqlType() 

Source Link

Document

Get the parameter SQL type.

Usage

From source file:paillard.florent.springframework.simplejdbcupdate.TableMetaDataContext.java

/**
 * Build the array of {@link java.sql.Types} based on configuration and
 * metadata information/*  w  w w.  j  ava2  s.c o m*/
 * 
 * @return the array of types to be used
 */
public int[] createColumnTypes(List<String> columns) {
    int[] types = new int[columns.size()];
    List<TableParameterMetaData> parameters = this.metaDataProvider.getTableParameterMetaData();
    Map<String, TableParameterMetaData> parameterMap = new HashMap<String, TableParameterMetaData>(
            parameters.size());
    for (TableParameterMetaData tpmd : parameters) {
        parameterMap.put(tpmd.getParameterName().toUpperCase(), tpmd);
    }
    int typeIndx = 0;
    for (String column : columns) {
        if (column == null) {
            types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN;
        } else {
            TableParameterMetaData tpmd = parameterMap.get(column.toUpperCase());
            if (tpmd != null) {
                types[typeIndx] = tpmd.getSqlType();
            } else {
                types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN;
            }
        }
        typeIndx++;
    }
    return types;
}

From source file:org.springframework.jdbc.core.metadata.GenericTableMetaDataProvider.java

/**
 * Method supporting the metadata processing for a table's columns
 *///www. j  av a 2 s  .  co m
private void processTableColumns(DatabaseMetaData databaseMetaData, TableMetaData tmd) {
    ResultSet tableColumns = null;
    String metaDataCatalogName = metaDataCatalogNameToUse(tmd.getCatalogName());
    String metaDataSchemaName = metaDataSchemaNameToUse(tmd.getSchemaName());
    String metaDataTableName = tableNameToUse(tmd.getTableName());
    if (logger.isDebugEnabled()) {
        logger.debug("Retrieving metadata for " + metaDataCatalogName + '/' + metaDataSchemaName + '/'
                + metaDataTableName);
    }
    try {
        tableColumns = databaseMetaData.getColumns(metaDataCatalogName, metaDataSchemaName, metaDataTableName,
                null);
        while (tableColumns.next()) {
            String columnName = tableColumns.getString("COLUMN_NAME");
            int dataType = tableColumns.getInt("DATA_TYPE");
            if (dataType == Types.DECIMAL) {
                String typeName = tableColumns.getString("TYPE_NAME");
                int decimalDigits = tableColumns.getInt("DECIMAL_DIGITS");
                // Override a DECIMAL data type for no-decimal numerics
                // (this is for better Oracle support where there have been issues
                // using DECIMAL for certain inserts (see SPR-6912))
                if ("NUMBER".equals(typeName) && decimalDigits == 0) {
                    dataType = Types.NUMERIC;
                    if (logger.isDebugEnabled()) {
                        logger.debug("Overriding metadata: " + columnName + " now NUMERIC instead of DECIMAL");
                    }
                }
            }
            boolean nullable = tableColumns.getBoolean("NULLABLE");
            TableParameterMetaData meta = new TableParameterMetaData(columnName, dataType, nullable);
            this.tableParameterMetaData.add(meta);
            if (logger.isDebugEnabled()) {
                logger.debug("Retrieved metadata: " + meta.getParameterName() + " " + meta.getSqlType() + " "
                        + meta.isNullable());
            }
        }
    } catch (SQLException ex) {
        if (logger.isWarnEnabled()) {
            logger.warn("Error while retrieving metadata for table columns: " + ex.getMessage());
        }
    } finally {
        JdbcUtils.closeResultSet(tableColumns);
    }
}

From source file:org.springframework.jdbc.core.metadata.TableMetaDataContext.java

/**
 * Build the array of {@link java.sql.Types} based on configuration and metadata information
 * @return the array of types to be used
 *///from w w  w  .j  a va 2s  . co  m
public int[] createInsertTypes() {
    int[] types = new int[getTableColumns().size()];
    List<TableParameterMetaData> parameters = obtainMetaDataProvider().getTableParameterMetaData();
    Map<String, TableParameterMetaData> parameterMap = new LinkedHashMap<>(parameters.size());
    for (TableParameterMetaData tpmd : parameters) {
        parameterMap.put(tpmd.getParameterName().toUpperCase(), tpmd);
    }
    int typeIndx = 0;
    for (String column : getTableColumns()) {
        if (column == null) {
            types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN;
        } else {
            TableParameterMetaData tpmd = parameterMap.get(column.toUpperCase());
            if (tpmd != null) {
                types[typeIndx] = tpmd.getSqlType();
            } else {
                types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN;
            }
        }
        typeIndx++;
    }
    return types;
}