diff --git a/test-common/src/main/java/com/test/common/utils/MySQLExecutor.java b/test-common/src/main/java/com/test/common/utils/MySQLExecutor.java new file mode 100644 index 0000000..0313a01 --- /dev/null +++ b/test-common/src/main/java/com/test/common/utils/MySQLExecutor.java @@ -0,0 +1,52 @@ +package com.test.common.utils; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author liangdaliang + * @Description:mysql执行器 + * @date 2025-02-20 17:05 + */ +public class MySQLExecutor { + + + /** + * 执行 SQL 查询,并将结果转换为 List> + * + * @param sql SQL 查询语句(已包含参数值) + * @param url 数据库 URL + * @param user 数据库用户名 + * @param password 数据库密码 + * @return 查询结果(每行数据为一个 Map) + */ + public static List> executeQuery(String sql, String url, String user, String password) { + List> result = new ArrayList<>(); + try (Connection connection = DriverManager.getConnection(url, user, password); + Statement statement = connection.createStatement()) { + // 执行查询,限制最大100行 + try (ResultSet resultSet = statement.executeQuery(sql + " LIMIT 100")) { + // 获取结果集的元数据 + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + // 遍历结果集 + while (resultSet.next()) { + Map row = new HashMap<>(); + for (int i = 1; i <= columnCount; i++) { + // 获取字段名和字段值 + String columnName = metaData.getColumnLabel(i); + Object columnValue = resultSet.getObject(i); + row.put(columnName, columnValue); + } + result.add(row); + } + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + return result; + } +} diff --git a/test-test/src/main/java/com/test/test/domain/TestCaseStep.java b/test-test/src/main/java/com/test/test/domain/TestCaseStep.java index d299beb..19a0291 100644 --- a/test-test/src/main/java/com/test/test/domain/TestCaseStep.java +++ b/test-test/src/main/java/com/test/test/domain/TestCaseStep.java @@ -78,6 +78,10 @@ public class TestCaseStep extends BaseEntity { @Excel(name = "http 请求协议(http, https)") private String apiProtocol; + /** 数据源id */ + @Excel(name = "数据源id") + private Long datasourceId; + /** sql 命令 */ @Excel(name = "sql 命令") private String sqlCommand; diff --git a/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml b/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml index 147810e..abdee99 100644 --- a/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml +++ b/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml @@ -20,6 +20,7 @@ + @@ -52,6 +53,7 @@ api_host, api_port, api_protocol, + datasource_id, sql_command, count, async, @@ -86,6 +88,7 @@ and api_host = #{apiHost} and api_port = #{apiPort} and api_protocol = #{apiProtocol} + and datasource_id = #{datasourceId} and sql_command = #{sqlCommand} and count = #{count} and async = #{async} @@ -121,6 +124,7 @@ api_host, api_port, api_protocol, + datasource_id, sql_command, count, async, @@ -151,6 +155,7 @@ #{apiHost}, #{apiPort}, #{apiProtocol}, + #{datasourceId}, #{sqlCommand}, #{count}, #{async}, @@ -185,6 +190,7 @@ api_host = #{apiHost}, api_port = #{apiPort}, api_protocol = #{apiProtocol}, + datasource_id = #{datasourceId}, sql_command = #{sqlCommand}, count = #{count}, async = #{async},