1 /**
2 * Copyright 2009-2019 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.apache.ibatis.executor.statement;
17
18 import java.sql.SQLException;
19 import java.sql.Statement;
20
21 /**
22 * Utility for {@link java.sql.Statement}.
23 *
24 * @since 3.4.0
25 * @author Kazuki Shimizu
26 */
27 public class StatementUtil {
28
29 private StatementUtil() {
30 // NOP
31 }
32
33 /**
34 * Apply a transaction timeout.
35 * <p>
36 * Update a query timeout to apply a transaction timeout.
37 * </p>
38 * @param statement a target statement
39 * @param queryTimeout a query timeout
40 * @param transactionTimeout a transaction timeout
41 * @throws SQLException if a database access error occurs, this method is called on a closed <code>Statement</code>
42 */
43 public static void applyTransactionTimeout(Statement statement, Integer queryTimeout, Integer transactionTimeout) throws SQLException {
44 if (transactionTimeout == null) {
45 return;
46 }
47 if (queryTimeout == null || queryTimeout == 0 || transactionTimeout < queryTimeout) {
48 statement.setQueryTimeout(transactionTimeout);
49 }
50 }
51
52 }