千家信息网

spring+mybatis多数据源的配置

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,解决方案:多套sqlSessionFactory,针对不同的数据源数据源Xml代码 peccancyjdbc:oracle:thin:@172.16.60.46:1521:orcl
千家信息网最后更新 2025年02月01日spring+mybatis多数据源的配置

解决方案:

多套sqlSessionFactory,针对不同的数据源

数据源

Xml代码

  1. <something-else-entirely>

  2. <proxool>

  3. <alias>peccancyalias>

  4. <driver-url>jdbc:oracle:thin:@172.16.60.46:1521:orcldriver-url>

  5. <driver-class>oracle.jdbc.driver.OracleDriverdriver-class>

  6. <driver-properties>

  7. <property name="user" value="oses"/>

  8. <property name="password" value="oses"/>

  9. driver-properties>

  10. ...

  11. proxool>

  12. <proxool>

  13. <alias>yhtepapalias>

  14. <driver-url>jdbc:oracle:thin:@172.16.60.46:1521:orcldriver-url>

  15. <driver-class>oracle.jdbc.driver.OracleDriverdriver-class>

  16. <driver-properties>

  17. <property name="user" value="pap"/>

  18. <property name="password" value="pap"/>

  19. driver-properties>

  20. ...

  21. proxool>

  22. something-else-entirely>

1.方法一

Xml代码

  1. <bean id="dataSource_peccancy" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >

  2. <property name="driverClassName">

  3. <value>org.logicalcobwebs.proxool.ProxoolDrivervalue>

  4. property>

  5. <property name="url">

  6. <value>proxool.peccancyvalue>

  7. property>

  8. bean>

  9. <bean id="dataSource_pap" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >

  10. <property name="driverClassName">

  11. <value>org.logicalcobwebs.proxool.ProxoolDrivervalue>

  12. property>

  13. <property name="url">

  14. <value>proxool.papvalue>

  15. property>

  16. bean>

Xml代码

  1. <bean id="sqlSessionFactory_peccancy" class="org.mybatis.spring.SqlSessionFactoryBean">

  2. <property name="dataSource" ref="dataSource_peccancy" />

  3. <property name="mapperLocations">

  4. <list>

  5. <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xmlvalue>

  6. <value>classpath*:net/yhte/web/peccancy/**/mapper/*Mapper.xmlvalue>

  7. list>

  8. property>

  9. bean>

  10. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  11. <property name="basePackage" value="net.yhte.web.peccancy.**.dao" />

  12. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_peccancy">property>

  13. bean>

  14. <bean id="sqlSessionFactory_pap" class="org.mybatis.spring.SqlSessionFactoryBean">

  15. <property name="dataSource" ref="dataSource_pap" />

  16. <property name="mapperLocations">

  17. <list>

  18. <value>classpath*:net/yhte/web/pap/**/mapper/*Mapper.xmlvalue>

  19. <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xmlvalue>

  20. list>

  21. property>

  22. bean>

  23. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  24. <property name="basePackage" value="net.yhte.web.pap.**.dao" />

  25. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_pap">property>

  26. bean>

本方案需要根据数据源的不同对*Mapper.xml进行分包处理,便于配置,同一个包下的*Mapper.xml如果对应的数据源不同,则不方便使用通配符进行统一扫描配置,且sqlSessionFactory扫包的basePackage 也需要分包。

2.使用自定义注解来取代spring的repository设置到annotationClass中。这样每个mapper文件中注入相应的注解@PapRepository,@PeccancyRepository

改成

配置文件如下:

Xml代码

  1. <bean id="sqlSessionFactory_peccancy" class="org.mybatis.spring.SqlSessionFactoryBean">

  2. <property name="dataSource" ref="dataSource_peccancy" />

  3. <property name="mapperLocations">

  4. <list>

  5. <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xmlvalue>

  6. <value>classpath*:net/yhte/web/**/mapper/*Mapper.xmlvalue>

  7. list>

  8. property>

  9. bean>

  10. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  11. <property name="annotationClass" value="net.yhte.common.service.PeccancyRepository">property>

  12. <property name="basePackage" value="net.yhte.web.**.dao" />

  13. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_peccancy">property>

  14. bean>

  15. <bean id="sqlSessionFactory_pap" class="org.mybatis.spring.SqlSessionFactoryBean">

  16. <property name="dataSource" ref="dataSource_pap" />

  17. <property name="mapperLocations">

  18. <list>

  19. <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xmlvalue>

  20. <value>classpath*:net/yhte/web/**/mapper/*Mapper.xmlvalue>

  21. list>

  22. property>

  23. bean>

  24. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  25. <property name="annotationClass" value="net.yhte.common.service.PapRepository">property>

  26. <property name="basePackage" value="net.yhte.web.**.dao" />

  27. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_pap">property>

  28. bean>

如上所配置使用pap的mapper文件就加上注解@PapRepository

Java代码

  1. public @interface PeccancyRepository {

  2. }

  3. public @interface PapRepository {

  4. }

Java代码

  1. // 使用dataSource_pap 数据源

  2. @PapRepository

  3. public interface UserMapper {

  4. List find(UserQueryBean userQueryBean);

  5. }

  6. // 使用dataSource_peccancy 数据源

  7. @PeccancyRepository

  8. public interface ParameterMapper{

  9. List find(ParameterQueryBean queryBean);

  10. }

获取【下载地址】

最主流的Java后台框架 springmvc spring mybatis SSM 项目源码


0