当前位置: 首页 > 知识库问答 >
问题:

配置mybatis以使用现有连接

糜野
2023-03-14

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

  1. URL
  2. 用户名
  3. 密码

我使用的配置如下所示:

<?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);
    null

但是,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

共有1个答案

刘选
2023-03-14

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

 类似资料:
  • 我使用的是用Spring配置的mybatis。一切都很好,但是在这种配置下没有连接池。每次我执行一些SQL语句,它都会创建一个新的连接。有什么简单的方法可以用mybatis+Spring配置连接池吗?

  • 使用JDBC MySQL驱动程序(v5.1.3及更高版本),可以通过前缀来发出“轻量级”ping,而不是提供的SQL语句。 例如: 我正在尝试配置myBatis来使用它,但它不起作用。我可以通过使用xRebel(分析工具)或用非常慢的语句交换来确认原始SQL正在运行,而不是轻量级ping。 有人知道为什么或者如何解决这个问题吗? 从我的myBatisMapperConfig副本中。xml 解释轻量

  • Mybatis 配置文件 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录 mybatis官方中文文档

  • 我正在尝试使用现有的虚拟环境设置让PyCharm运行。我已将我的PyCharm项目指向以下路径中现有虚拟环境中的python解释器~/.虚拟环境/myproj/ 文件- 该项目运行良好,但编辑器在作为virtualenv的一部分安装的包上仍然亮起红色。 知道我错过了什么吗?

  • 本文向大家介绍MyBatis-Generator的配置说明和使用,包括了MyBatis-Generator的配置说明和使用的使用技巧和注意事项,需要的朋友参考一下 关于MyBatis: MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码。 他可以内省数

  • 本文向大家介绍Spring Boot集成MyBatis实现通用Mapper的配置及使用,包括了Spring Boot集成MyBatis实现通用Mapper的配置及使用的使用技巧和注意事项,需要的朋友参考一下 什么是通用Mapper 通用Mapper就是为了解决单表增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法。 关