ibatis项目中需要同时用到3种数据连接,5个数据库如下:
oracle、sqlserver、mysql三种数据连接要用,其中oracle需要连接db1及db2数据库,sqlserver需要连接到sqldb1及sqldb2数据库,mysql需要调用CRM数据库,
如果只连接其中的一个数据库是可以的,但连接两个或以上就不行了,报以下错误了:
com.ibatis.sqlmap.client.SqlMapException: There is no statement named info.abatorgenerated_selectByExample in this SqlMap.
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:293)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:606)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:95)
at _jsp._index__jsp._jspService(_index__jsp.java:97)
at com.caucho.jsp.JavaPage.service(JavaPage.java:60)
at com.caucho.jsp.Page.pageservice(Page.java:570)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:179)
at com.grandcareweb.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:99)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:274)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:514)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520)
at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
at java.lang.Thread.run(Thread.java:619)请高手指点!为谢

解决方案 »

  1.   

    你是用什么获得连接的?ibatis自己的配置文件还是spring托管,可以贴一段配置文件的内容出来吗?
      

  2.   

    sqlconfig.xml如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
              "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    <sqlMapConfig>
    <properties resource="com/tea/mmsc/util/jdbc1.properties" />
            <properties resource="com/tea/mmsc/util/jdbc2.properties" />
    <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" maxRequests="64" maxSessions="20" maxTransactions="20" useStatementNamespaces="true" />
    <transactionManager type="JDBC">
    <dataSource type="SIMPLE">
    <property name="JDBC.Driver" value="${jdbc.driver}" />
    <property name="JDBC.ConnectionURL" value="${jdbc.url}" />
    <property name="JDBC.Username" value="${jdbc.user}" />
    <property name="JDBC.Password" value="${jdbc.password}" />
    </dataSource>
    </transactionManager>
    ---------------------------------------------------------------
    jdbc1.properties如下:
    #jdbc.driver = oracle.jdbc.driver.OracleDriver
    #jdbc.url = jdbc:oracle:thin:@192.168.2.51:1521:lylor
    #jdbc.user = tea
    #jdbc.password = teadatabase2007
    ----------------------------------------------------
    jdbc2.properties如下:
    #jdbc.driver = net.sourceforge.jtds.jdbc.Driver
    #jdbc.url = jdbc:jtds:sqlserver://localhost/teaother
    #jdbc.user = sa
    #jdbc.password = 123
      

  3.   

    <properties resource="com/tea/mmsc/util/jdbc1.properties" />
            <properties resource="com/tea/mmsc/util/jdbc2.properties" />
    <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" maxRequests="64" maxSessions="20" maxTransactions="20" useStatementNamespaces="true" />
    <transactionManager type="JDBC">
    <dataSource type="SIMPLE">
    <property name="JDBC.Driver" value="${jdbc.driver}" />
    <property name="JDBC.ConnectionURL" value="${jdbc.url}" />
    <property name="JDBC.Username" value="${jdbc.user}" />
    <property name="JDBC.Password" value="${jdbc.password}" />
    </dataSource>
    </transactionManager> 
    一个properties 对应一个transactionManager试试看。