H2Dialect.java
package org.itsallcode.jdbc.dialect;
import java.time.LocalDate;
import java.time.LocalTime;
import org.itsallcode.jdbc.resultset.generic.ColumnMetaData;
/**
* DB dialect for the H2 database.
*/
public class H2Dialect extends AbstractDbDialect {
/**
* Create a new instance.
*/
public H2Dialect() {
super("jdbc:h2:");
}
@Override
public ColumnValueExtractor createExtractor(final ColumnMetaData column) {
return switch (column.type().jdbcType()) {
case TIMESTAMP -> Extractors.timestampToUTCInstant();
case TIMESTAMP_WITH_TIMEZONE -> Extractors.timestampToInstant();
case CLOB -> Extractors.clobToString();
case BLOB -> Extractors.blobToBytes();
case TIME -> Extractors.forType(LocalTime.class);
case DATE -> Extractors.forType(LocalDate.class);
default -> Extractors.generic();
};
}
@Override
public <T> ColumnValueSetter<T> createSetter(final Class<T> type) {
return Setters.generic();
}
}