List of usage examples for org.springframework.jdbc.core.metadata TableParameterMetaData getSqlType
public int getSqlType()
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; }