在yml配置了两个数据源:
mysql哪个数据源正常增删查改都没问题
oracle哪个报错:Invalid bound statement (not found): com.example.dao.OracleDateMapper.insert
路径啥的也都一致
代码如下::
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