sqlSession.getConnection()如何设置连接超时时间
时间: 2024-03-01 18:54:04 浏览: 25
在 MyBatis 中,获取连接超时时间需要通过配置文件进行设置。具体方法如下:
1. 在 MyBatis 的配置文件中,添加如下配置:
```xml
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="poolMaximumActiveConnections" value="10"/>
<property name="poolMaximumIdleConnections" value="5"/>
<property name="poolMaximumCheckoutTime" value="20000"/>
<property name="poolTimeToWait" value="20000"/>
</dataSource>
</environment>
```
在 `<dataSource>` 标签中,可以设置连接池的相关属性,其中:
- `poolMaximumActiveConnections`:连接池中允许的最大活动连接数,默认值是 10。
- `poolMaximumIdleConnections`:连接池中允许的最大空闲连接数,默认值是 5。
- `poolMaximumCheckoutTime`:连接池中连接的最大存活时间,默认值是 20000(即 20 秒)。
- `poolTimeToWait`:在连接池中获取连接时等待的最长时间,默认值是 20000(即 20 秒)。
2. 在 Java 代码中,通过 `SqlSessionFactoryBuilder` 创建 `SqlSessionFactory` 对象,并传入配置文件的路径,如下:
```java
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
```
3. 在 Java 代码中,通过 `SqlSessionFactory` 创建 `SqlSession` 对象,并调用 `getConnection()` 方法获取连接,如下:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
Connection connection = sqlSession.getConnection();
```
在获取连接的过程中,如果连接池中没有可用的连接,会等待 `poolTimeToWait` 毫秒,如果等待超时,则会抛出 `org.apache.ibatis.exceptions.PersistenceException` 异常。