DataSqlSource增加executeQueryMap方法

This commit is contained in:
redkale
2023-07-25 21:51:42 +08:00
parent fe67add571
commit f2769dc182

View File

@@ -5,6 +5,7 @@ package org.redkale.source;
import java.util.*; import java.util.*;
import java.util.function.*; import java.util.function.*;
import static org.redkale.source.DataResultSet.formatColumnValue;
/** /**
* *
@@ -35,7 +36,7 @@ public interface DataSqlSource extends DataSource {
return null; return null;
} }
if (type.isPrimitive() || type == byte[].class || type.getName().startsWith("java.")) { if (type.isPrimitive() || type == byte[].class || type.getName().startsWith("java.")) {
return (V) DataResultSet.formatColumnValue(type, rset.getObject(1)); return (V) formatColumnValue(type, rset.getObject(1));
} }
return EntityBuilder.load(type).getObjectValue(rset); return EntityBuilder.load(type).getObjectValue(rset);
}); });
@@ -46,11 +47,24 @@ public interface DataSqlSource extends DataSource {
if (type.isPrimitive() || type == byte[].class || type.getName().startsWith("java.")) { if (type.isPrimitive() || type == byte[].class || type.getName().startsWith("java.")) {
List<V> list = new ArrayList<>(); List<V> list = new ArrayList<>();
while (rset.next()) { while (rset.next()) {
list.add(rset.wasNull() ? null : (V) DataResultSet.formatColumnValue(type, rset.getObject(1))); list.add(rset.wasNull() ? null : (V) formatColumnValue(type, rset.getObject(1)));
} }
return list; return list;
} }
return EntityBuilder.load(type).getObjectList(rset); return EntityBuilder.load(type).getObjectList(rset);
}); });
} }
default <K, V> Map<K, V> executeQueryMap(Class<K> keyType, Class<V> valType, String sql) {
return executeQuery(sql, rset -> {
Map<K, V> map = new LinkedHashMap<K, V>();
while (rset.next()) {
if (!rset.wasNull()) {
map.put((K) formatColumnValue(keyType, rset.getObject(1)), (V) formatColumnValue(valType, rset.getObject(2)));
}
}
return map;
});
}
} }