添加依賴
- mybatis-spring-boot-starter
- mysql-connector-java
在application.yml中配置mybaties
mybatis:
mapper-locations: classpath:mapping/*Mapping.xml #mapping文件的路徑
type-aliases-package: com.example.srdemo1.bean #類型別名的包名,開頭名爲小寫作爲別名
config-location:classpath:mybatiesConfiguration.xml #這個mybaties的配置文件
創建mapping文件的接口類
在配置路徑下創建接口的mapping文件
在啓動類上添加@MapperScan註解
這是Mybaties的註解,其value是一個String數組,代表所生產的接口代理類所在的包,如果接口被@Mapper註解的話則不需要@MapperScan註解了
在需要的地方進行注入代理類
改變Mybaties所使用的數據源
修改整個項目所使用的數據源
概述:直接注入一個DataSource類型的Bean作爲使用的數據源,並使用@Primary註解,設爲默認使用數據源
修改Mybaties的數據源
概述:自己創建SqlSessionFactoryBean類型的Bean並自己配置所使用的數據源
Mybaties配置多數據源
概述:當我們要分別使用兩個數據庫的時候,我們可以使用Mybaties配置多個數據源,甚至一個
分包配置:
-
在application.yml配置多個數據源,這個數據源可以是其他類型的數據源,例如Druid
-
在JavaConfiguration類中分別配置Mapper
/**
* 這是一個配置類,配置一個Mapper,包括配置Mapper接口,Mapping文件位置,這個接口使用的數據源等等
*/
@Configuration
@MapperScan(basePackages = "com.pr.dao1", sqlSessionTemplateRef = "sqlSessionTemplate")
public class DataSource1Config {
// 配置這個Mapper所操作的數據源對象,併爲這個數據源註冊到容器中
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
// 配置這個SQL Session工廠對象,這個工廠對象將生成SQLSession
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
// 加載Mapping文件,如mapper.xml
// bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*.xml"));
return bean.getObject();
}
// 配置這個數據源的事務管理器,當發生異常時可回滾
@Bean(name = "transactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("dataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
// 配置持久化層訪問模板化的工具,線程安全
@Bean(name = "sqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
- 進過以上配置後即可達到多數據源配置,每個包使用的數據源都不相同