Closed smypai closed 4 months ago
@Configuration public class DruidDataSourceConfig {
@Bean public DruidDataSource routingDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC"); dataSource.setUsername("root"); dataSource.setPassword("root"); return dataSource; } @Bean public DruidDataSource slaveDataSource1() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC"); dataSource.setUsername("root"); dataSource.setPassword("root"); return dataSource; } @Bean public DruidDataSource slaveDataSource2() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC"); dataSource.setUsername("root"); dataSource.setPassword("root"); return dataSource; } @Bean public AbstractRoutingDataSource routingDataSource(DruidDataSource masterDataSource, DruidDataSource slaveDataSource1) { Map<Object, Object> targetDataSources = new HashMap<>(); targetDataSources.put("master", masterDataSource); targetDataSources.put("slave1", slaveDataSource1); targetDataSources.put("slave2", slaveDataSource2); AbstractRoutingDataSource routingDataSource = new AbstractRoutingDataSource() { @Override protected Object determineCurrentLookupKey() { if (TransactionSynchronizationManager.isActualTransactionActive()) { // 如果有活动的事务,使用主数据库 return "master"; } else { // 否则,使用从数据库 // 这里只是简单地轮流使用从数据库,您可能需要根据实际情况实现更复杂的负载均衡策略 return ThreadLocalRandom.current().nextInt(2) == 0 ? "slave1" : "slave2"; } } }; routingDataSource.setTargetDataSources(targetDataSources); routingDataSource.setDefaultTargetDataSource(masterDataSource); // default is master return routingDataSource; } @Autowired @Qualifier("routingDataSource") private DataSource dataSource; @Bean public SqlSessionFactory sqlSessionFactory(MybatisPlusInterceptor mybatisPlusInterceptor, GlobalConfig globalConfig) throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); return sqlSessionFactoryBean.getObject(); }
}
druid配置主从源,Mybatis plus join 不在自动启动,需要如何配置?
https://mybatisplusjoin.com/pages/problem.html#invalid-bound-statement-not-found
当前使用版本(必填,否则不予处理)
@Configuration public class DruidDataSourceConfig {
}
该问题是如何引起的?(确定最新版也有问题再提!!!)
druid配置主从源,Mybatis plus join 不在自动启动,需要如何配置?
重现步骤(如果有就写完整)
报错信息