是否可以使用iBATIS中止长时间运行的查询?

时间:2013-02-04 07:03:06

标签: java sql ibatis

我有一个GUI,允许用户运行长时间运行的查询。有时,用户后悔运行查询并希望取消它们。查询是针对Oracle数据库使用iBATIS运行的,我知道java.sql.Statement接口定义了一个取消方法,该方法可能会或可能不会由驱动程序实现。所以我的问题是,是否可以使用iBATIS来调用此方法来取消查询(给定正确的驱动程序),或者是否有任何其他方法可以中止正在进行的长时间查询。

1 个答案:

答案 0 :(得分:2)

嗯,嗯 我想,一旦进入数据库服务器,取消它实际上是“数据库供应商特定”问题。
如果您的要求是取消查询,请参阅您的申请 (即 - 如果它到达Oracle数据库服务器,并在那里运行,你很好,只要你不会得到结果),考虑使用具有cancel方法的Future接口。
你可以submit一个“Callable”运行你的查询,它将返回一个适当的类型对象,这是一个实现。
如果你需要中止 - 只需使用未来对象的“取消”方法。 您还可以使用“isCanceled”检查提交是否已取消,并对您的代码进行适当的处​​理。