描述信息:
mybatis自动生成的文件需要指定才能被启动类扫描到,
不能直接写在启动类中,否则会影响到其他注入无法被加载。
扫描mybatis生成文件位置
package com.project.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import tk.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.project.mapper"},
sqlSessionFactoryRef="sqlDeviceSessionFactory")
public class DeviceDBConfig {
@Autowired
@Qualifier(value = "dataSourceDevice")
private DataSource dataSourceDevice;
@Bean
public SqlSessionFactory sqlDeviceSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSourceDevice);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:com/project/*Mapper.xml"));
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlDeviceSessionTemplate() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlDeviceSessionFactory());
return template;
}
}
将数据库连接信息加载到Bean中
package com.project.config;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean(name = "dataSourceDevice")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
在启动类中加入注解:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})