考虑一下,
从数据库中检索数据(由于数据量较大)需要一分钟以上的时间。
我知道,我们可以在选择标签中设置“timeout”属性(仅针对单个查询)或在设置标签(SqlMapConfig.xml - 对于所有查询)中设置“defaultStatementTimeout”属性,以强制终止执行中的查询。
<select id='uniqueName' parameterClass='java.util.Map' resultClass = "java.lang.String" timeout="60">
或者
<settings useStatementNamespaces="false" defaultStatementTimeout="60"/>
通过上述配置,IBatis 会抛出“用户取消请求”错误并终止执行。
我们还有其他方法可以终止执行吗?
我的场景是:
当用户请求 3 年的数据时,从数据库中获取数据需要一分钟多的时间。
同时,当用户请求 1 天的数据或发送“取消”请求时,我不得不强制终止之前的执行(3 年数据检索),因为即使用户数量有限,它也会影响性能。
注意
我没有使用上述任何设置。
请为此提供解决方案。提前致谢。