Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring3 ibatis2.x多数据源_Java_Oracle_Spring Mvc_Datasource_Ibatis - Fatal编程技术网

Java spring3 ibatis2.x多数据源

Java spring3 ibatis2.x多数据源,java,oracle,spring-mvc,datasource,ibatis,Java,Oracle,Spring Mvc,Datasource,Ibatis,我使用SpringiBATIS连接Oracle多用户空间 看起来像是用户A,用户B,用户系统 始终使用用户系统。在任务(线程)中操作时的其他用户 spring.xml <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassN

我使用SpringiBATIS连接Oracle多用户空间

看起来像是用户A,用户B,用户系统

始终使用用户系统。在任务(线程)中操作时的其他用户

spring.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="System" />
    <property name="password" value="system" />
</bean>

<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="A" />
    <property name="password" value="a" />
</bean>

    <bean id="dataSource3" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="B" />
    <property name="password" value="b" />
</bean>

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="classpath:SqlMapConfig.xml" />
    <property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlMapClient1" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="classpath:SqlMapConfig.xml" />
    <property name="dataSource" ref="dataSource2" />
</bean>

<bean id="sqlMapClient2" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="classpath:SqlMapConfig.xml" />
    <property name="dataSource" ref="dataSource3" />
</bean>
任务:在taskJob中,我想操作其他数据源。如何实施?

public class TaskJob {

          //@Autowired
          //UserDao userDao;
           public void test(){
                 //to get other sqlmapclient in UserDao
                userDao.test();//for User A,User B,User ....
           }

}

使用SqlMapClientDaoSupport无法做到这一点。如果您确定不使用SqlMapClientDaoSupport,那么以下解决方案就足够了

MapClientFactoryBean不应具有数据源

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="classpath:SqlMapConfig.xml" />
 </bean>

有两个UserDAO(每个数据源一个)


请参阅此处了解更多详细信息


我自己无法测试代码。请尝试。

谢谢,但是这个解决方案太麻烦了。有更简单的方法吗?Oracle用户很多。我需要在线程中循环这些用户SqlMapClientDaoSupport设计为只支持一个SqlMapClient。。所以我真的怀疑你是否可以用现有的代码做任何事情..我可以自己创建数据源而不使用spring(aop),比如:for(DataSource dt…(new UserDao().set(dt);)
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="classpath:SqlMapConfig.xml" />
 </bean>
<bean id = "userDAO" class = "com.xxxx.UserDAO">
     <property name="dataSource" ref="dataSource" />
      <property name="sqlMapClient" ref = "sqlMapClient">
<bean id = "userDAO1" class = "com.xxxx.UserDAO">
     <property name="dataSource2" ref="dataSource" />
      <property name="sqlMapClient" ref = "sqlMapClient">
</bean>