JDBC查询超时时间设置

    我们有时候需要控制SQL查询的最大耗时,比如一个“执行时长”的SQL在指定时间内如果没有执行完毕,我们需要“取消”此SQL,我们知道在JDBC中Statement类可以通过setQueryTimeout()来实现此特性。

    当设置query timeout之后,JDBC客户端发送请求,并等待直到执行完成或者超时,当超时后,客户端尝试cancel当前SQL,要求mysql server中断执行,因为网络通讯需要时间,可能在客户端尝试cancel时,mysql server已经执行成功,此时请求将会返回(而不是取消);超时后取消成功,那么当前客户端调用将会抛出SQLTimeoutException。

 

    queryTimeout选项,目前不能在JDBC Url中作为properties传入,所以不能像socketTimeout、connectionTimeout参数那样可以在URL中指定。

 

一、mybatis设置timeout

    1、在mybatis-config.xml中设置:此处设置对全局的所有sql都生效,包括insert、select、update等。

 


	
        

 

 

    2、在statement语句中设置:只对当前statement有效,select、insert、update等语句中都有timeout属性