2017-05-05 83 views
0

我一直在尝试使用Spring MVC配置MyBatis以使用多个数据库。我有一个页面正试图连接到其中一个数据库来获取数据,以便它可以填充到下拉框中。使用Spring MVC配置MyBatis以获得多个数据源

现在我不知道什么是错的这个配置,但我收到以下错误:

]] Root cause of ServletException. org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06576: not a valid function or procedure name 

我在这里提供的XML文件,供您参考

<bean id="dataSource1" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="url" value="jdbc:oracle:thin:@1.1.2.5:1529:DITOS" /> 
     <property name="username" value="return" /> 
     <property name="password" value="return" /> 
    </bean> 

    <!-- scan for mappers and let them be autowired --> 
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
     <property name="basePackage" 
      value="p.com.ent.appl.return.dev.dao,p.com.ent.appl.return.dep.dao,p.com.ent.appl.return.dao.otheruser" /> 
     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory1" /> 
    </bean> 


    <!-- Declare a transaction manager --> 
    <bean id="cashReturnTx" 
     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
     <property name="dataSource" ref="dataSource1" /> 
    </bean> 

    <!-- define the SqlSessionFactory, notice that configLocation is not needed 
     when you use MapperFactoryBean --> 
    <bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource1" /> 
     <property name="configLocation" value="WEB-INF/mybatis/sqlmap-config.xml" /> 
     <!-- <property name="mapperLocations" value="classpath:/com/vrn/ent/dev/daoxml/*.xml" 
      /> --> 
     <property name="mapperLocations" 
      value="classpath*:/p/com/ent/appl/return/**/daoxml/*.xml" /> 
    </bean> 


    <bean id="sqlSession1" class="org.mybatis.spring.SqlSessionTemplate"> 
     <constructor-arg index="0" ref="sqlSessionFactory1" /> 
    </bean> 

    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="url" value="jdbc:oracle:thin:@4.24.80.15:1522:LM" /> 
     <property name="username" value="RETURN" /> 
     <property name="password" value="OWNER" /> 
    </bean> 

<!-- scan for mappers and let them be autowired --> 
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
     <property name="basePackage" 
      value="p.com.ent.appl.return.dev.dao,p.com.ent.appl.return.dep.dao,p.com.ent.appl.return.dao.otheruser" /> 
     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 
    </bean> 

    <bean id="otherUserTx" 
     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
     <property name="dataSource" ref="dataSource" /> 
    </bean> 


    <!-- define the SqlSessionFactory, notice that configLocation is not needed 
     when you use MapperFactoryBean --> 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="configLocation" value="WEB-INF/mybatis/sqlmap-config.xml" /> 
     <!-- <property name="mapperLocations" value="classpath:/com/vrn/ent/dev/daoxml/*.xml" 
      /> --> 
     <property name="mapperLocations" 
      value="classpath*:/p/com/ent/appl/return/**/daoxml/*.xml" /> 
    </bean> 

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
     <constructor-arg index="0" ref="sqlSessionFactory" /> 
    </bean> 
</beans> 
+0

我们解决了它。实际问题是属性名称=“mapperLocations”。我们在这里给出了相同的位置。但是我们改变了地理位置,并且对于它所运行的两个数据源都有所不同。 – Shiva1281969

回答

1

根据例外:BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06576: not a valid function or procedure name,数据库被击中。

阅读关于错误ORA-06576

问题与调用过程的方式有关。正确的方法是{ CALL MyProcedure (#arg0, #arg1) }

配置显示相同的映射器可能与两个数据源一起使用,如果目标模式不同,会发生什么情况?