Springmvc+mybatis配置动态切换数据源 并实现mybatis同时支持mysql和oracle数据库

注意:配置切换数据源和实现mybatis支持多种数据库为独立的配置,二者不相干

一、实现mybatis支持多种数据库


    
    
    
        
  //这里配置扫描不需要区分 扫描全部即可 
            classpath*:com/**/mapper/*.xml
        
    
    



    



    
        
            oracle
            mysql
        
    

mybatis中使用databaseId="#"即可自动根据当前数据库类型执行对应语句



二、springmvc+mytais配置多个数据源

Springmvc+mybatis配置动态切换数据源 并实现mybatis同时支持mysql和oracle数据库_第1张图片

定义区分各个数据源
public class DataSources {
//注意:这里的大小写要和xml文件对应的key值完全保持一致
    public static final String MYSQL = "MYSQL";
    public static final String ORACLE = "ORACLE";


}

获取当前配置要使用的数据源

public class DataSourceTypeManager {
    private static final ThreadLocal dataSourceTypes = new ThreadLocal<>();

    public static String get() {
        return dataSourceTypes.get();
    }

    public static void set(String dataSourceType) {
        dataSourceTypes.set(dataSourceType);
    }

    public static void reset() {
        dataSourceTypes.set(DataSources.MYSQL);
    }

}

实现类 实现数据源切换

public class ThreadLocalRountingDataSource extends AbstractRoutingDataSource {

//这里的dbType可配置在jdbc.properties文件中 即可实现灵活切换数据源
    public String dbType;


    @Override
    protected Object determineCurrentLookupKey() {
        if(dbType.equalsIgnoreCase(DataSources.MYSQL)){
            DataSourceTypeManager.set(DataSources.MYSQL);
        }else if(dbType.equalsIgnoreCase(DataSources.ORACLE)){
            DataSourceTypeManager.set(DataSources.ORACLE);
        }else {
            DataSourceTypeManager.set(DataSources.MYSQL);
        }

        return DataSourceTypeManager.get();
    }

    public String getDbType() {
        return dbType;
    }

    public void setDbType(String dbType) {
        this.dbType = dbType;
    }
}

applicationContext.xml文件中配置多个数据源


    
    
    
    



    
    
    
    

配置自定义的数据源管理类 管理多个数据源  获取properties文件中配置的dbType 匹配对应数据源


    
    
        
//这里的key值和上文类中的值大小写要完全一致
            
            
        
    
//如果根据对应的key值没有找到对应的数据源 则默认使用
    

properties中定义当前要使用的数据源类型 和自定义类以及xml文件中的key值对应

dbType=MYSQL

 

 

 

你可能感兴趣的:(Springmvc+mybatis配置动态切换数据源 并实现mybatis同时支持mysql和oracle数据库)