SpringBoot集成使用mybaties

添加依賴

  • 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配置多個數據源,甚至一個

分包配置:

  1. 在application.yml配置多個數據源,這個數據源可以是其他類型的數據源,例如Druid
    在這裏插入圖片描述

  2. 在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);
  }
}
  1. 進過以上配置後即可達到多數據源配置,每個包使用的數據源都不相同
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章