|
@@ -14,49 +14,40 @@ import java.util.Map;
|
|
|
|
|
|
public abstract class AbstractConnector {
|
|
|
|
|
|
- private static final Map<Integer, ValueMapper> values = new LinkedHashMap<>();
|
|
|
+ protected static final Map<Integer, ValueMapper> valueMappers = new LinkedHashMap<>();
|
|
|
|
|
|
static {
|
|
|
// 常用类型
|
|
|
- values.putIfAbsent(Types.VARCHAR, new VarcharValueMapper());
|
|
|
- values.putIfAbsent(Types.INTEGER, new IntegerValueMapper());
|
|
|
- values.putIfAbsent(Types.BIGINT, new BigintValueMapper());
|
|
|
- values.putIfAbsent(Types.TIMESTAMP, new TimestampValueMapper());
|
|
|
- values.putIfAbsent(Types.DATE, new DateValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.VARCHAR, new VarcharValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.INTEGER, new IntegerValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.BIGINT, new BigintValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.TIMESTAMP, new TimestampValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.DATE, new DateValueMapper());
|
|
|
|
|
|
// 较少使用
|
|
|
- values.putIfAbsent(Types.CHAR, new CharValueMapper());
|
|
|
- values.putIfAbsent(Types.NCHAR, new NCharValueMapper());
|
|
|
- values.putIfAbsent(Types.NVARCHAR, new NVarcharValueMapper());
|
|
|
- values.putIfAbsent(Types.LONGVARCHAR, new LongVarcharValueMapper());
|
|
|
- values.putIfAbsent(Types.NUMERIC, new NumberValueMapper());
|
|
|
- values.putIfAbsent(Types.BINARY, new BinaryValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.CHAR, new CharValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.NCHAR, new NCharValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.NVARCHAR, new NVarcharValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.LONGVARCHAR, new LongVarcharValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.NUMERIC, new NumberValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.BINARY, new BinaryValueMapper());
|
|
|
|
|
|
// 很少使用
|
|
|
- values.putIfAbsent(Types.SMALLINT, new SmallintValueMapper());
|
|
|
- values.putIfAbsent(Types.TINYINT, new TinyintValueMapper());
|
|
|
- values.putIfAbsent(Types.TIME, new TimeValueMapper());
|
|
|
- values.putIfAbsent(Types.DECIMAL, new DecimalValueMapper());
|
|
|
- values.putIfAbsent(Types.DOUBLE, new DoubleValueMapper());
|
|
|
- values.putIfAbsent(Types.FLOAT, new FloatValueMapper());
|
|
|
- values.putIfAbsent(Types.BIT, new BitValueMapper());
|
|
|
- values.putIfAbsent(Types.BLOB, new BlobValueMapper());
|
|
|
- values.putIfAbsent(Types.CLOB, new ClobValueMapper());
|
|
|
- values.putIfAbsent(Types.NCLOB, new NClobValueMapper());
|
|
|
- values.putIfAbsent(Types.ROWID, new RowIdValueMapper());
|
|
|
- values.putIfAbsent(Types.REAL, new RealValueMapper());
|
|
|
- values.putIfAbsent(Types.VARBINARY, new VarBinaryValueMapper());
|
|
|
- values.putIfAbsent(Types.LONGVARBINARY, new LongVarBinaryValueMapper());
|
|
|
- values.putIfAbsent(Types.OTHER, new OtherValueMapper());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取值转换配置
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- protected Map<Integer, ValueMapper> getValueMapper() {
|
|
|
- return values;
|
|
|
+ valueMappers.putIfAbsent(Types.SMALLINT, new SmallintValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.TINYINT, new TinyintValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.TIME, new TimeValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.DECIMAL, new DecimalValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.DOUBLE, new DoubleValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.FLOAT, new FloatValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.BIT, new BitValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.BLOB, new BlobValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.CLOB, new ClobValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.NCLOB, new NClobValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.ROWID, new RowIdValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.REAL, new RealValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.VARBINARY, new VarBinaryValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.LONGVARBINARY, new LongVarBinaryValueMapper());
|
|
|
+ valueMappers.putIfAbsent(Types.OTHER, new OtherValueMapper());
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -71,12 +62,14 @@ public abstract class AbstractConnector {
|
|
|
}
|
|
|
|
|
|
// 获取字段映射规则
|
|
|
- final Map<Integer, ValueMapper> mappers = getValueMapper();
|
|
|
for (Map row : config.getData()) {
|
|
|
// 根据目标字段类型转换值
|
|
|
for (Field f : config.getFields()) {
|
|
|
+ if(null == f){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
// 根据字段类型转换值
|
|
|
- final ValueMapper valueMapper = mappers.get(f.getType());
|
|
|
+ final ValueMapper valueMapper = valueMappers.get(f.getType());
|
|
|
if (null != valueMapper) {
|
|
|
// 当数据类型不同时,转换值类型
|
|
|
row.put(f.getName(), valueMapper.convertValue(connectorMapper, row.get(f.getName())));
|