jdbc优化

This commit is contained in:
redkale
2023-04-03 22:17:46 +08:00
parent 8f3ae4b5a7
commit 663ca4f441

View File

@@ -2150,15 +2150,17 @@ public class DataJdbcSource extends AbstractDataSqlSource {
try {
String prepareSQL = info.getFindQuestionPrepareSQL(ids[0]);
PreparedStatement ps = conn.prepareStatement(prepareSQL);
DataJdbcResultSet rr = new DataJdbcResultSet(info);
for (Serializable pk : ids) {
ps.setObject(1, pk);
}
ResultSet set = ps.executeQuery();
final DataResultSet rr = createDataResultSet(info, set);
while (set.next()) {
rr.resultSet(set);
if (set.next()) {
list.add(getEntityValue(info, null, rr));
} else {
list.add(null);
}
}
set.close();
ps.close();
slowLog(s, prepareSQL);
return list;
@@ -2553,10 +2555,24 @@ public class DataJdbcSource extends AbstractDataSqlSource {
}
public static DataResultSet createDataResultSet(EntityInfo info, ResultSet set) {
return new DataJdbcResultSet(info).resultSet(set);
}
final ResultSet rr = set;
protected static class DataJdbcResultSet implements DataResultSet {
return new DataResultSet() {
EntityInfo info;
ResultSet rr;
public DataJdbcResultSet(EntityInfo info) {
this.info = info;
}
public DataJdbcResultSet resultSet(ResultSet set) {
this.rr = set;
return this;
}
@Override
public <T> Serializable getObject(Attribute<T, Serializable> attr, int index, String column) {
@@ -2666,8 +2682,6 @@ public class DataJdbcSource extends AbstractDataSqlSource {
return info;
}
};
}
protected class ConnectionPool implements AutoCloseable {