31 Ocak 2022 Pazartesi

JDBC java.sql.Type Sınıfı - SQL Tipleri ve Java Tipleri Arasında Eşleşme

Giriş
Şu satırı dahil ederiz
import java.sql.Types;
Açıklaması şöyle. Yani Java 8'den sonra java.sql.JDBCType enumeration kullanılır. Aslında bu enumeration da java.sql.SQLType arayüzünü gerçekleştiriyor
With improvements in the API's, as of Java 8 and JDBC 4.2, we have JDBCType and SQLType, ...
java.sql.Types ve Java tipleri arasındaki eşleşme şöyle. Toplam 39 tane SQL tipi var. Bu tablo kısa bir özeti
SQL data type Java data type
BIT                 boolean
TINYINT         byte
SMALLINT         short
INTEGER int
BIGINT         long
REAL         float
FLOAT, DOUBLE double

DATE
TIME
TIMESTAMP         java.sql.Date, java.sql.Time, java.sql.Timestamp

VARCHAR String
BLOB         java.sql.Blob
Örnek
Şöyle yaparız
//Convert ResultSet to Java type
public <T> T convertPrimitive(final Class<T> clazz, final ResultSet resultSet)
   throws QueryResultProcessorException {

  try {
    Object obj = readFromResultSet(clazz, resultSet, 1);
    return assignResult(resultSet, obj);
  } catch (SQLException exception) {
    ...     
  }
}
Yardımcı sınıflar şöyle
//Reads the specified columnNumber from ResultSet and converts it to specified Java type
private <T> Object readFromResultSet(Class<T> clazz, ResultSet rs, Integer columnNumber)
  throws SQLException {
  Object obj = null;
  if (Util.isInteger(clazz)) {
        obj = rs.getInt(columnNumber);
  } else if (Util.isLong(clazz)) {
     obj = rs.getLong(columnNumber);
  } else if (Util.isBoolean(clazz)) {
    obj = rs.getBoolean(columnNumber);
  } else if (Util.isTimestamp(clazz)) {
    obj = rs.getTimestamp(columnNumber);
  } else if (Util.isString(clazz)) {
    obj = rs.getString(columnNumber);
  } else if (Util.isFloat(clazz)) {
     obj = rs.getFloat(columnNumber);
  } else if (Util.isDouble(clazz)) {
    obj = rs.getDouble(columnNumber);
  } else if (Util.isByte(clazz)) {
    obj = rs.getByte(columnNumber);
  } else if (Util.isShort(clazz)) {
    obj = rs.getShort(columnNumber);
  } else if (Util.isSqlDate(clazz)) {
    obj = rs.getDate(columnNumber);
  } else if (Util.isChar(clazz)) {
    String val = rs.getString(columnNumber);
    obj = Util.setChar(obj, val);
  } else {
     obj = rs.getObject(columnNumber);
   }
   return obj;
}
Yardımcı sınıflar şöyle
//Checksif resultSet.wasNull() == true
private <T> T assignResult(final ResultSet resultSet, final Object obj) throws SQLException {
  // if result wasn't null store it in the field else field = null
  T result = null;
  if (!resultSet.wasNull()) {
    result = (T) obj;
  }
  return result;
}

Hiç yorum yok:

Yorum Gönder