0
我想在我的應用程序和Oracle數據庫之間建立連接。我沒有下列數據庫信息:配置mybatis使用現有連接
- URL
- 用戶名
- 密碼
我可以檢索是有效java.sql.Connection
通過使用黑板所提供的API。
在這種情況下可以設置mybatis嗎?
我使用的配置如下圖所示:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="useGeneratedKeys" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<typeAliases>
<typeAlias alias="assignment" type="simpleproj.assignment.model.Assignment"/>
<typeAlias alias="assignmentLog" type="simpleproj.assignment.model.AssignmentLog"/>
</typeAliases>
<mappers>
<mapper resource="simpleproj/assignment/model/Assignment.xml" />
</mappers>
</configuration>
這是我得到一個新的SqlSessionFactory
實例:
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
return new SqlSessionFactoryBuilder().build(reader, "assignment");
之後,我試圖通過這個代碼來檢索會話:
session = sqlSessionFactory.openSession(connection);
我檢查過connection
有效w第i:
connection.isValid(3);
,它返回真- 一個
PreparedStatement
可以成功執行
然而,sqlSessionFactory.openSession(connection)
與以下堆棧跟蹤生成錯誤:
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error opening session. Cause: java.lang.reflect.UndeclaredThrowableException
### Cause: java.lang.reflect.UndeclaredThrowableException
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromConnection(DefaultSqlSessionFactory.java:102)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSession(DefaultSqlSessionFactory.java:67)
at simpleproj.assignment.dao.DatabaseDAO.getSession(DatabaseDAO.java:55)
at simpleproj.assignment.dao.DatabaseDAO.deleteAssignmentList(DatabaseDAO.java:124)
at simpleproj.assignment.AssignmentLoader.importData(AssignmentLoader.java:85)
at simpleproj.assignment.AssignmentLoader.main(AssignmentLoader.java:49)
Caused by: java.lang.reflect.UndeclaredThrowableException
at $Proxy7.getAutoCommit(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromConnection(DefaultSqlSessionFactory.java:99)
... 5 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at blackboard.db.ConnectionManager$ConnectionProxy.invoke(ConnectionManager.java:1419)
... 7 more
Caused by: java.sql.SQLException: Connection [email protected] is closed.
at org.apache.commons.dbcp.DelegatingConnection.checkOpen(DelegatingConnection.java:398)
at org.apache.commons.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:337)
... 11 more
使用'connection.getAutoCommit()'進行測試,但此行引發同樣的異常'由$ Proxy7.getAutoCommit(Unknown Source)引發的java.lang.reflect.UndeclaredThrowableException'。 –