public static int javaTypeToSqlParameterType(Class javaType) {
/* JDBC 3.0 only - not compatible with e.g. MySQL at present
javaTypeToSqlTypeMap.put(boolean.class, new Integer(Types.BOOLEAN));
javaTypeToSqlTypeMap.put(Boolean.class, new Integer(Types.BOOLEAN));
*/
javaTypeToSqlTypeMap.put(byte.class, new Integer(Types.TINYINT));
javaTypeToSqlTypeMap.put(Byte.class, new Integer(Types.TINYINT));
javaTypeToSqlTypeMap.put(short.class, new Integer(Types.SMALLINT));
javaTypeToSqlTypeMap.put(Short.class, new Integer(Types.SMALLINT));
javaTypeToSqlTypeMap.put(int.class, new Integer(Types.INTEGER));
javaTypeToSqlTypeMap.put(Integer.class, new Integer(Types.INTEGER));
javaTypeToSqlTypeMap.put(long.class, new Integer(Types.BIGINT));
javaTypeToSqlTypeMap.put(Long.class, new Integer(Types.BIGINT));
javaTypeToSqlTypeMap.put(BigInteger.class, new Integer(Types.BIGINT));
javaTypeToSqlTypeMap.put(float.class, new Integer(Types.FLOAT));
javaTypeToSqlTypeMap.put(Float.class, new Integer(Types.FLOAT));
javaTypeToSqlTypeMap.put(double.class, new Integer(Types.DOUBLE));
javaTypeToSqlTypeMap.put(Double.class, new Integer(Types.DOUBLE));
javaTypeToSqlTypeMap.put(BigDecimal.class, new Integer(Types.DECIMAL));
javaTypeToSqlTypeMap.put(java.sql.Date.class, new Integer(Types.DATE));
javaTypeToSqlTypeMap.put(java.sql.Time.class, new Integer(Types.TIME));
javaTypeToSqlTypeMap.put(java.sql.Timestamp.class, new Integer(Types.TIMESTAMP));
javaTypeToSqlTypeMap.put(Blob.class, new Integer(Types.BLOB));
javaTypeToSqlTypeMap.put(Clob.class, new Integer(Types.CLOB));
Integer sqlType = (Integer) javaTypeToSqlTypeMap.get(javaType);
if (sqlType != null) {
return sqlType.intValue();
}
if (Number.class.isAssignableFrom(javaType)) {
return Types.NUMERIC;
}
if (isStringValue(javaType)) {
return Types.VARCHAR;
}
if (isDateValue(javaType) || Calendar.class.isAssignableFrom(javaType)) {
return Types.TIMESTAMP;
}
return SqlTypeValue.TYPE_UNKNOWN;
}
Derive a default SQL type from the given Java type. |