【问题标题】:connecting to Oracle XE with myBatis using JDBC in Eclipse在 Eclipse 中使用 JDBC 使用 myBatis 连接到 Oracle XE
【发布时间】:2023-03-05 06:22:01
【问题描述】:

我在 Maven 中使用 Eclipse,在 myBatis-config.xml 中我有以下代码。代码的 H2 部分可以工作,因为我可以使用我的程序连接到 H2 并访问数据库。我的代码的 Oracle 部分不起作用。我正在使用 ORACLE DATABASE XE 11.2,带有工作区的应用程序快递:test,用户名:名称,密码:123。当我在 Eclipse 中运行测试类时,我可以通过 H2 测试,但是当我使用 oracle 运行相同的测试时相反,它会出错。 "选择键或将结果设置到参数对象时出错。案例:java.sql.SQLSyntaxErrorException: ORA-02289: 序列不存在。

<environment id="H2">
    <transactionManager type="JDBC" />
    <dataSource type="POOLED">
        <property name="driver" value="org.h2.Driver" />
        <property name="url" value="jdbc:h2:tcp://localhost:9096/sample/testDB" />
        <property name="username" value="sa" />
        <property name="password" value="123" />
    </dataSource>
</environment>

<environment id="ORACLE">
    <transactionManager type="JDBC" />
    <dataSource type="POOLED">
        <property name="driver" value="oracle.jdbc.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
        <property name="username" value="system" />
        <property name="password" value="123" />
    </dataSource>
</environment>

【问题讨论】:

  • 如果您的用户名是“name”,请不要在配置中添加“system”。 (实际上,不要对系统做任何事情。)
  • 用名字和123试了一下,同样的错误。

标签: eclipse oracle maven jdbc oracle-xe


【解决方案1】:

您好,阅读MyBatis官网的文档,可以得到以下信息:

如果使用多数据库功能,您需要通过以下方式通知 databaseIdProvider 属性:

如果使用多数据库功能,您需要通过以下方式通知 databaseIdProvider 属性:

<bean id="vendorProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
        <props>
            <prop key="SQL Server">sqlserver</prop>
            <prop key="DB2">db2</prop>
            <prop key="Oracle">oracle</prop>
            <prop key="MySQL">mysql</prop>
        </props>
    </property>
</bean>

<bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
    <property name="properties" ref="vendorProperties"/>
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath*:sample/config/mappers/**/*.xml" />
    <property name="databaseIdProvider" ref="databaseIdProvider"/>
</bean>

希望对您有所帮助。

您好。


注意 从 1.3.0 开始,添加了配置属性。可以直接指定一个 Configuration 实例,无需 MyBatis XML 配置文件。例如: mybatis.org/spring/es/factorybean.html

【讨论】: