Bladeren bron

优化查询返回值包装,支持同名列查询返回

zhou-hao 7 jaren geleden
bovenliggende
commit
aa3f01787e

+ 3 - 1
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-simple/src/main/java/org/hswebframework/web/datasource/manager/simple/NonTransactionSqlExecutor.java

@@ -29,7 +29,9 @@ public class NonTransactionSqlExecutor implements SqlExecutor {
         try {
             switch (sqlInfo.getType().toUpperCase()) {
                 case "SELECT":
-                    executeResult = executor.list(sqlInfo.getSql());
+                    QueryResultWrapper wrapper=new QueryResultWrapper();
+                    executor.list(sqlInfo.getSql(),wrapper);
+                    executeResult = wrapper.getResult();
                     break;
                 case "INSERT":
                 case "UPDATE":

+ 15 - 0
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-simple/src/main/java/org/hswebframework/web/datasource/manager/simple/QueryResult.java

@@ -0,0 +1,15 @@
+package org.hswebframework.web.datasource.manager.simple;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class QueryResult {
+    private List<String> columns;
+
+    private List<List<Object>> data=new ArrayList<>();
+
+}

+ 46 - 0
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-simple/src/main/java/org/hswebframework/web/datasource/manager/simple/QueryResultWrapper.java

@@ -0,0 +1,46 @@
+package org.hswebframework.web.datasource.manager.simple;
+
+import org.hswebframework.ezorm.core.ObjectWrapper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class QueryResultWrapper implements ObjectWrapper<QueryResult> {
+   private QueryResult result = new QueryResult();
+
+    private List<Object> temp = new ArrayList<>();
+
+    @Override
+    public void setUp(List<String> columns) {
+        result.setColumns(columns);
+    }
+
+    @Override
+    public Class<QueryResult> getType() {
+        return QueryResult.class;
+    }
+
+    @Override
+    public QueryResult newInstance() {
+        return result;
+    }
+
+    @Override
+    public void wrapper(QueryResult instance, int index, String attr, Object value) {
+        temp.add(value);
+
+    }
+
+    @Override
+    public boolean done(QueryResult instance) {
+        instance.getData().add(new ArrayList<>(temp));
+        temp.clear();
+        return false;
+    }
+
+    public QueryResult getResult() {
+        return result;
+    }
+
+
+}

+ 1 - 1
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-starter/src/test/java/org/hswebframework/web/datasource/manager/simple/SimpleDatabaseManagerServiceTest.java

@@ -60,7 +60,7 @@ public class SimpleDatabaseManagerServiceTest extends SimpleWebApplicationTests
         countDownLatch.await();
 
         sqlInfo = new SqlInfo();
-        sqlInfo.setSql("select * from t_test ");
+        sqlInfo.setSql("select *,name as \"NAME\",1 as \"NAME\" from t_test ");
         sqlInfo.setType("select");
 
         request.setSql(Arrays.asList(sqlInfo));