我根据网上的文章配置的多数据源,在查询标有Primary注解的数据源时一切正常,但查非Primary的数据源时会抛出异常,查了很久不知道什么原因,大佬们帮忙看看原因啊!!
代码贴出来
Java code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@Configuration
@MapperScan`(basePackages = {"com.demo.clp.db.company.repository"}, sqlSessionTemplateRef = "companyDbSessionTemplate")`
public class CompanyDbConfig {
@Value`("${spring.datasource.companydb.url}")`
private String companyDbUrl;
@Value`("${spring.datasource.companydb.username}")`
private String companyDbUsername;
@Value`("${spring.datasource.companydb.password}")`
private String companyDbPassword;
@Value`("${spring.datasource.companydb.driver-class-name}")`
private String companyDbDriver;
@Bean`(name = "companyDbDataSource")`
@Primary
public DataSource companyDbDataSource(){
DataSourceBuilder companyDataSourceBuilder = DataSourceBuilder.create();
companyDataSourceBuilder.username(companyDbUsername);
companyDataSourceBuilder.password(PwdUtil.decryptString(companyDbPassword,PwdUtil.pwd));
companyDataSourceBuilder.url(companyDbUrl);
companyDataSourceBuilder.driverClassName(companyDbDriver);
return companyDataSourceBuilder.build();
}
@Bean`(name = "companyDbSessionFactory")`
@Primary
public SqlSessionFactory companyDbSessionFactory() `throws Exception{`
SqlSessionFactoryBean factoryBean = `new SqlSessionFactoryBean();`
factoryBean.setDataSource(companyDbDataSource());
factoryBean.setMapperLocations(`new PathMatchingResourcePatternResolver()`
.getResources(`"classpath:templates/com/demo/clp/db/company/mapper/*.xml"`));
return factoryBean.getObject();
}
@Bean`(name = "companyDbSessionTemplate")`
@Primary
public SqlSessionTemplate companyDbSessionTemplate() `throws Exception{`
SqlSessionTemplate template = `new SqlSessionTemplate(companyDbSessionFactory());`
return template;
}
@Bean`(name = "companyDbTransactionManager")`
@Primary
public DataSourceTransactionManager companyDbTransactionManager(){
return new DataSourceTransactionManager(companyDbDataSource());
}
}
Java code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@Configuration
@MapperScan`(basePackages = {"com.demo.clp.db.member.repository"},sqlSessionTemplateRef = "memberDbSessionTemplate")`
public class MemberDbConfig {
@Value`("${spring.datasource.memberdb.url}")`
private String memberDbUrl;
@Value`("${spring.datasource.memberdb.username}")`
private String memberDbUsernam;
@Value`("${spring.datasource.memberdb.password}")`
private String memberDbPassword;
@Value`("${spring.datasource.memberdb.driver-class-name}")`
private String memberDbDriver;
@Bean`(name = "memberDbDataSource")`
// @Primary
public DataSource memberDbDataSource(){
DataSourceBuilder memberDataSourceBuilder = DataSourceBuilder.create();
memberDataSourceBuilder.username(memberDbUsernam);
memberDataSourceBuilder.password(PwdUtil.decryptString(memberDbPassword,PwdUtil.pwd));
memberDataSourceBuilder.url(memberDbUrl);
memberDataSourceBuilder.driverClassName(memberDbDriver);
return memberDataSourceBuilder.build();
}
@Bean`(name = "memberDbSessionFactory")`
// @Primary
public SqlSessionFactory memberDbSessionFactory() `throws Exception{`
SqlSessionFactoryBean factoryBean = `new SqlSessionFactoryBean();`
factoryBean.setDataSource(memberDbDataSource());
factoryBean.setMapperLocations(`new PathMatchingResourcePatternResolver()`
.getResources(`"classpath:templates/com/demo/clp/db/member/mapper/*.xml"`));
return factoryBean.getObject();
}
@Bean`(name = "memberDbSessionTemplate")`
// @Primary
public SqlSessionTemplate memberDbSessionTemplate() `throws Exception{`
SqlSessionTemplate template = `new SqlSessionTemplate(memberDbSessionFactory());`
return template;
}
@Bean`(name = "memberDbTransactionManager")`
// @Primary
public DataSourceTransactionManager memberDbTransactionManager(){
return new DataSourceTransactionManager(memberDbDataSource());
}
}
这是查询非Primary的方法
Java code?
1
2
3
4
5
6
7
8
9
10
11
12
public Wifi queryRecord(String key) {
Wifi example = `new WifiExample();`
example.createCriteria()
.andKeyEqualTo(key);
List<Wifi> list = wifiMapper.selectByExample(example);
Optional<Wifi> wifiOpt = list.stream()
.sorted((a, b) -> b.getModifiedOn().compareTo(a.getModifiedOn()))
.findFirst();
if (wifiOpt .isPresent())
return wifiOpt.get();
return null`;`
}
报错内容如下:
Plain Text code?
1
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.ExampleProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.ExampleProvider
用的mybatis generator生成的相关代码,Primary查询是正常的,非Primary报异常,很蛋疼!
Original url: Access
Created at: 2019-10-14 16:06:14
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论