我根据网上的文章配置的多数据源,在查询标有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
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论