Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

事件追踪数据源和mybatis数据源冲突请问如何解决 #1

Closed
zhou1124 opened this issue Apr 16, 2018 · 4 comments
Closed

Comments

@zhou1124
Copy link

No description provided.

@yinjihuan
Copy link
Owner

怎么个冲突法呀,贴错误信息呀

@zhou1124
Copy link
Author

配置:
datasource:
url: jdbc:mysql://dev.db.com:3306/token_exchange
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
trade:
url: jdbc:mysql://dev.db.com:3306/jd-job
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
log:
url: jdbc:mysql://dev.db.com:3306/jd-job
username: root
password: 123456

业务查询mybatis默认数据源成是log数据源
Cause: java.sql.SQLSyntaxErrorException: Table 'jd-job.exg_trade_detail' doesn't exist
这个表应该在trade库下面
datasource代码

/**
* 查询数据源
* @return
*/
@primary
@bean("datasourceTrade")
@ConfigurationProperties("spring.datasource.druid.trade")
public DataSource dataSourceTrade(){
log.info("初始化druid-trade数据源");
return DruidDataSourceBuilder.create().build();
}

/**
 * 任务执行事件数据源
 * @return
 */
@Bean("datasourcelog")
@ConfigurationProperties("spring.datasource.druid.log")
public DataSource dataSourcelog(){
    log.info("初始化druid-log数据源");
    return DruidDataSourceBuilder.create().build();
}

问题:无论我如何调整业务数据源都是eventlog数据源

@yinjihuan
Copy link
Owner

我觉得你这个跟我的starter没关系,我只需要引用一个数据源,我不创建数据源,你就算把我的starter去掉,你配置多个数据源,你的项目还是有问题,问题根据在于你那个mybatis-plus如何指定对应的数据源,因为数据源都是DataSource,它那边注入要根据名称来注入即可,不根据名字的话多个数据源存在,注入就有问题了

你这边创建mybatis的SqlSessionFactory的时候指定注入的数据源应该就可以:
@Autowired
@qualifier("数据源名称")
private DataSource ds;

@zhou1124
Copy link
Author

谢谢
解决代码:
@Autowired
@qualifier("datasourceTrade")
private DataSource dataSource;

@Bean("mybatisSqlSession")
public SqlSessionFactory sqlSessionFactory(ResourceLoader resourceLoader, GlobalConfiguration globalConfiguration) throws Exception {
    MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
    sqlSessionFactory.setDataSource(dataSource);
    sqlSessionFactory.setTypeAliasesPackage("com.jd.entity");
    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    try {
        sqlSessionFactory.setMapperLocations(resolver.getResources("classpath*:com/ylzx/dao/**/*.xml"));
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException(e);
    }
    MybatisConfiguration configuration = new MybatisConfiguration();
    configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
    configuration.setJdbcTypeForNull(JdbcType.NULL);
    configuration.setMapUnderscoreToCamelCase(true);
    configuration.setCacheEnabled(false);
    sqlSessionFactory.setConfiguration(configuration);
    sqlSessionFactory.setPlugins(new Interceptor[]{
            new PaginationInterceptor(),
            new PerformanceInterceptor(),
            new OptimisticLockerInterceptor()
    });
    sqlSessionFactory.setGlobalConfig(globalConfiguration);
    return sqlSessionFactory.getObject();
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants