Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
停止在Java中以编程方式执行SpringJDBC查询_Java_Mysql_Spring_Jdbc_Spring Jdbc - Fatal编程技术网

停止在Java中以编程方式执行SpringJDBC查询

停止在Java中以编程方式执行SpringJDBC查询,java,mysql,spring,jdbc,spring-jdbc,Java,Mysql,Spring,Jdbc,Spring Jdbc,目前,我正在使用JavaSpringJDBC库运行长时间运行的MySQL查询。对于这个程序,我需要一种停止正在运行的查询的方法。我想以编程的方式完成这项工作,所以在这里我不需要杀死进程 此外,使用Java代码设置超时和终止线程也不是首选 有没有一种方法可以使用编程约定来实现这一点,或者有没有更好的方法或设计来在Java中实现这个用例?您可以使用SQL KILL命令来停止进程 样本 MariaDB [(none)]> show processlist;; +----+------------

目前,我正在使用JavaSpringJDBC库运行长时间运行的MySQL查询。对于这个程序,我需要一种停止正在运行的查询的方法。我想以编程的方式完成这项工作,所以在这里我不需要杀死进程

此外,使用Java代码设置超时和终止线程也不是首选


有没有一种方法可以使用编程约定来实现这一点,或者有没有更好的方法或设计来在Java中实现这个用例?

您可以使用SQL KILL命令来停止进程

样本

MariaDB [(none)]> show processlist;;
+----+-------------+-----------+------+---------+------+--------------------------+-------------------+----------+
| Id | User        | Host      | db   | Command | Time | State                    | Info              | Progress |
+----+-------------+-----------+------+---------+------+--------------------------+-------------------+----------+
|  1 | system user |           | NULL | Daemon  | NULL | InnoDB purge worker      | NULL              |    0.000 |
|  2 | system user |           | NULL | Daemon  | NULL | InnoDB purge worker      | NULL              |    0.000 |
|  3 | system user |           | NULL | Daemon  | NULL | InnoDB purge worker      | NULL              |    0.000 |
|  4 | system user |           | NULL | Daemon  | NULL | InnoDB purge coordinator | NULL              |    0.000 |
|  5 | system user |           | NULL | Daemon  | NULL | InnoDB shutdown handler  | NULL              |    0.000 |
| 46 | root        | localhost | NULL | Query   |   56 | User sleep               | select sleep(199) |    0.000 |
| 47 | root        | localhost | NULL | Query   |    0 | init                     | show processlist  |    0.000 |
+----+-------------+-----------+------+---------+------+--------------------------+-------------------+----------+
7 rows in set (0.00 sec)


MariaDB [(none)]> kill 46;
Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> show processlist;;
+----+-------------+-----------+------+---------+------+--------------------------+------------------+----------+
| Id | User        | Host      | db   | Command | Time | State                    | Info             | Progress |
+----+-------------+-----------+------+---------+------+--------------------------+------------------+----------+
|  1 | system user |           | NULL | Daemon  | NULL | InnoDB purge worker      | NULL             |    0.000 |
|  2 | system user |           | NULL | Daemon  | NULL | InnoDB purge worker      | NULL             |    0.000 |
|  3 | system user |           | NULL | Daemon  | NULL | InnoDB purge worker      | NULL             |    0.000 |
|  4 | system user |           | NULL | Daemon  | NULL | InnoDB purge coordinator | NULL             |    0.000 |
|  5 | system user |           | NULL | Daemon  | NULL | InnoDB shutdown handler  | NULL             |    0.000 |
| 47 | root        | localhost | NULL | Query   |    0 | init                     | show processlist |    0.000 |
+----+-------------+-----------+------+---------+------+--------------------------+------------------+----------+
6 rows in set (0.00 sec)

类似,但您应该始终使用数据库、驱动程序和用例测试
stmt.cancel()
,如果它真的有效…我使用的是Spring JDBC,我们有取消语句的选项吗?我找不到。如果您使用
jdbctemplate
,您应该相应地标记问题
cancel
是一个普通的JDBC函数,您可以使用它为问题添加标签。但是你也可以在你的上下文中使用它。这回答了你的问题吗@MarmiteBomber我已经更新了我的问题,谢谢你的回答,但是我想用Java来做这件事