gpt4 book ai didi

java - 配置 mybatis 使用现有连接

转载 作者:太空宇宙 更新时间:2023-11-04 13:50:52 24 4
gpt4 key购买 nike

我想在我的应用程序和 Oracle 数据库之间建立连接。我没有以下数据库信息:

  1. 网址
  2. 用户名
  3. 密码

我可以使用 Blackboard 提供的 API 检索有效的 java.sql.Connection

这种情况可以设置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 :

session = sqlSessionFactory.openSession(connection);

我已检查连接是否有效:

  1. connection.isValid(3);,返回 true
  2. 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 oracle.jdbc.driver.LogicalConnection@1627c16 is closed.
at org.apache.commons.dbcp.DelegatingConnection.checkOpen(DelegatingConnection.java:398)
at org.apache.commons.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:337)
... 11 more

最佳答案

从此错误:oracle.jdbc.driver.LogicalConnection@1627c16 已关闭。当您将其传递给 sqlSessionFactoryBean 时,该连接将关闭。您可以调用connection.getAutoCommit()来测试连接是否支持事务。

关于java - 配置 mybatis 使用现有连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295170/

24 4 0
文章推荐: c++ - 在 Qt 中使用 C++ 创建 mysql 触发器
文章推荐: javascript - 实际
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com