Spring Boot + mybatis 多数据源配置-CSDN论坛-问题-未解决-先收录

我根据网上的文章配置的多数据源,在查询标有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

请先后发表评论
  • 最新评论
  • 总共2条评论
DeepMind

rain16881

@MapperScan(basePackages = {"cn.superdesk.app.core.dao.mapper","cn.superdesk.app.organisation.dao.mapper"})

2019-10-25 16:34:53 回复

DeepMind

rain16881

//@MapperScan(basePackages = {"cn.superdesk.app.*.dao.mapper"})

2019-10-25 16:34:50 回复