我有一个mybatis + spring的现有设置,用于使用Oracle DB。我有一组java mapper接口,一组相应的mapper xmls(每个都引用了相应的java mapper)。我也需要为MSSQL设置支持,但发现很难做到这一点。我在com / mycomp / mob / db / mappers / mssql中创建了一组单独的xmls(特定于MSSQL的查询)。
下面是我的applicationConext.xml的摘录(这里DBDataSource是一个内部类,它读取配置文件以获取所有数据库详细信息)。
<bean name="dataSource" class="com.mycomp.mob.core.db.DBDataSource">
<constructor-arg index="0" name="dbAlias" value="mob" />
<constructor-arg index="1" name="cfgSection" value="primary" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mycomp.mob.db.mappers.oracle" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.mycomp.mob.db.mappers.oracle" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
以下是mybatis-config.xml的一部分(此处$ {} params使用较早的DBDatasource替换)
<configuration>
<typeAliases>
<package name="com.mycomp.mob.db.model" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mycomp/mob/db/mappers/oracle/tenant.xml" />
<mapper resource="com/mycomp/mob/db/mappers/oracle/functionenty.xml" />
</mappers>
</configuration>
com.mycomp.mob.db.model包含租户和职能的POJO 用法如下:
ITenantMapper mappper = sqlSessionFactory.openSession().getMapper(ItenantMapper.class)
Tenant t = mapper.getTenant();
现在,只使用一个DB(在DB配置文件中配置为主数据库)。那么如何确保java mapper接口调用与该特定DB相对应的XML。 还需要知道我可以在mssql的mapper xmls里面配置相同的java mapper类名吗? 流程是否正确使用,或者我需要更改支持多个数据库的流程。
答案 0 :(得分:0)
在Spring 1中为Oracle创建两个数据源和两个SessionFactories,另一个用于MSSQL。