springboot 显式配置数据源 解决mybatis注解无法被识别问题
1正常来讲,只要在yml 加上数据库配置,然后pom添加相关依赖,带有mapper注解的mybatis接口是可以被springboot识别的,但是如果配置之后出现mapper注解无法被创建bean,或者SqlSessionFactory没有创建的错误,就要显式配置bean ,本做法参照springboot创建多数据源方法
创建一个配置类
@Configuration @MapperScan(basePackages = {"com.xxxx.xxxx.xxxxx.mapper"}, sqlSessionFactoryRef = "sqlsession1") public class DataSConfig { @Bean(name = "test1DataSource")//注入到这个容器 @ConfigurationProperties(prefix = "spring.datasource")//表示取application.properties配置文件中的前缀 @Primary //primary是设置优先,因为有多个数据源,在没有明确指定用哪个的情况下,会用带有primary的,这个注解必须有一个数据源要添加 public DataSource testDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "sqlsession1") @Primary //@Qualifier("xxx")的含义是告诉他使用哪个DataSource public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } @Bean(name = "test1TransactionManager")//配置事务 @Primary public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "test1SqlSessionTemplate") @Primary public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("sqlsession1") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } }
代码来自https://blog.csdn.net/qq_41076797/article/details/82889770
然后配置yml
spring:
datasource:
username: root
password: xxxx
jdbc-url: jdbc:mysql://xxxxx
driver-class-name: com.mysql.cj.jdbc.Driver
#不同的springboot版本有差异,如果出错就网上搜一下
不同的数据源使用不同的mapperscan
附赠多数据源使用
封装jar的简易方法http://www.360doc.com/content/20/0129/15/13328254_888499128.shtml
jdbctemplate多数据源 https://blog.didispace.com/springbootmultidatasource/
配置连接池 https://blog.51cto.com/zero01/2161509