springboot mybatis配置双数据源,主数据源可以正常操作,另一个报错

在yml配置了两个数据源:

img

img

mysql哪个数据源正常增删查改都没问题
oracle哪个报错:Invalid bound statement (not found): com.example.dao.OracleDateMapper.insert

路径啥的也都一致

img

代码如下::



import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = MysqlDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "mysqlSqlSessionFactory")
public class MysqlDataSourceConfig {
    /**
     * 精确到 mysql 目录,以便跟其他数据源隔离
     *
     */
    static final String PACKAGE = "com.example.dao.MemoDateMapper";//对应的mysql dao层包

    static final String MAPPER_LOCATION = "classpath:mapper/mysql/*.xml";//对应mysql的mapper.xml文件

    @Value("${spring.datasource.mysql.url}")
    private String url;

    @Value("${spring.datasource.mysql.username}")
    private String user;

    @Value("${spring.datasource.mysql.password}")
    private String password;

    @Value("${spring.datasource.mysql.driver-class-name}")
    private String driverClass;

    @Bean(name = "mysqlDataSource")
    @Primary
    public DataSource mysqlDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean(name = "mysqlTransactionManager")
    @Primary
    public DataSourceTransactionManager mysqlTransactionManager() {
        return new DataSourceTransactionManager(mysqlDataSource());
    }

    @Bean(name = "mysqlSqlSessionFactory")
    @Primary
    public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource mysqlDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(mysqlDataSource);
        sessionFactory.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources(MysqlDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }

}


import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = OracleDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "oracleSqlSessionFactory")
public class OracleDataSourceConfig {
    // 精确到 oracle 目录,以便跟其他数据源隔离
    static final String PACKAGE = "com.example.dao.OracleDateMapper";//对应的mysql dao层包

    static final String MAPPER_LOCATION = "classpath:mapper/oracle/*.xml";//对应mysql的mapper.xml文件

    @Value("${spring.datasource.oracle.url}")
    private String url;

    @Value("${spring.datasource.oracle.username}")
    private String user;

    @Value("${spring.datasource.oracle.password}")
    private String password;

    @Value("${spring.datasource.oracle.driver-class-name}")
    private String driverClass;

    @Bean(name = "oracleDataSource")
    public DataSource oracleDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean(name = "oracleTransactionManager")
    public DataSourceTransactionManager oracleTransactionManager() {
        return new DataSourceTransactionManager(oracleDataSource());
    }

    @Bean(name = "oracleSqlSessionFactory")
    public SqlSessionFactory oracleSqlSessionFactory(@Qualifier("oracleDataSource") DataSource oracleDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(oracleDataSource);
        sessionFactory.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources(OracleDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }

}

server:
  port: 80 #启动端口
spring:
  datasource:
    mysql:
      url: jdbc:mysql://127.0.0.1:3306/wxaccount?useUnicode=true&characterEncoding=utf8
      driver-class-name: com.mysql.jdbc.Driver
      username: 123123123
      password: 123123123
    oracle:
      url: jdbc:mysql://127.0.0.1:3306/wxaccount?useUnicode=true&characterEncoding=utf8
      driver-class-name: com.mysql.jdbc.Driver
      username: 123123
      password: 123123123
  output:
    ansi:
      enabled: DETECT
  quartz: #quartz的配置
    job-store-type: jdbc
    jdbc:
      initialize-schema: never
  mvc:
    view:
      prefix:classpath: /static/
      suffix: .html
    static-path-pattern: /**
  thymeleaf: #Thymeleaf配置
    cache: false
    encoding: utf-8
    mode: HTML5
    prefix: classpath:/templates/
    suffix: .html
    servlet:
      content-type: text/html
  main:
    allow-bean-definition-overriding: true
  mybatis: #配置mybatis #指定sql映射文件位置  claspath:resources文件夹
    mapper-locations: classpath:mapper/*/*.xml

你这PACKAGE 怎么是接口?不是package