Spring Boot 통합 my batis 다 중 데이터 원본 사용 방법

머리말
본 튜 토리 얼 은 실전 에 치 우 치고 프로그램 원숭이 가 직접 copy 코드 를 자신의 프로젝트 에 가입 하여 간단 한 수정 과 수정 을 하면 사용 할 수 있 습 니 다.그리고 springboot 와 my batis 에 대해 소 개 를 하지 않 습 니 다.만약 에 독자 가 알 고 싶 으 면 저 에 게 메 시 지 를 남 겨 주 고 지속 적 으로 관심 을 가 지 며 저 는 나중에 천천히 업데이트 하 겠 습 니 다.(검은색 지역 코드 부분,안 드 로 이 드 핸드폰 은 수 동 으로 왼쪽으로 미 끄 러 지 며 모든 코드 를 볼 수 있 습 니 다)
통합
사실 통합 은 간단 합 니 다.gradle 을 사용 하면 build.gradle 파일 에 추가 합 니 다.

compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1')
Maven 을 사용 하 는 경우 pom.xml 파일 에 추가 합 니 다.
 
단일 라 이브 러 리 설정:
도입 후 기본적으로 Spring Boot 는 자동 으로 DataSource 를 설정 합 니 다.classpath 에서 H2,hsqldb 등 메모리 데이터 베 이 스 를 검색 하 는 jar 패 키 지 를 찾 으 면 메모리 데이터 베 이 스 를 자동 으로 설정 합 니 다.
application.yml 또는application.property에서spring.datasource.*관련 설정 파 라 메 터 를 지정 하면 Spring Boot 는 이 설정 을 사용 하여 DataSource 를 만 듭 니 다.
그리고 이 DataSource 를 사용 하 는 SqlSession Factory Bean 과 SqlSession Template 를 자동 으로 생 성 합 니 다.Mappers 를 자동 으로 검색 하여 SqlSession Template 에 연결 하고 Spring 컨 텍스트 에 등록 합 니 다.

 spring.datasource.url=jdbc:mysql://localhost/test
 spring.datasource.username=dbuser
 spring.datasource.password=dbpass
 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
더 많은 매개 변 수 는 DataSource Properties 를 보십시오.
다 중 라 이브 러 리 설정:
업무 수요 로 인해 프로젝트 는 여러 개의 데이터 베 이 스 를 동시에 사용 하여 업무 개발 을 해 야 한다.
우선,우 리 는 application.property 에서 두 개의 데이터 원본 설정 을 사용자 정의 해 야 합 니 다.하 나 는 first.datasource.*를 사용 하고 다른 하 나 는 second.datasource.*를 사용 해 야 합 니 다.다른 하 나 는 연결 되 어 있 는 라 이브 러 리 가 무엇 인지 한눈 에 볼 수 있 도록 데이터베이스 이름 을 사용 할 수 있 습 니 다.예 를 들 어 user.datasource.*를 사용 할 수 있 습 니 다.다 중 데이터 원본 을 사용 할 때,모든 필요 한 설정 은 생략 할 수 없습니다.

first.datasource.url=jdbc:mysql://localhost/first
first.datasource.username=dbuser1
first.datasource.password=dbpass1
first.datasource.driver-class-name=com.mysql.jdbc.Driver
first.datasource.type=com.alibaba.druid.pool.DruidDataSource//    Druid,         
second.datasource.url=jdbc:mysql://localhost/second
second.datasource.username=dbuser2
second.datasource.password=dbpass2
second.datasource.driver-class-name=com.mysql.jdbc.Driver
second.datasource.type=com.alibaba.druid.pool.DruidDataSource
코드 를 직접 올 리 는 방법 은 두 개의 데이터 원본 을 두 개의 설정 클래스 로 만 드 는 것 입 니 다.

@Configuration
@MapperScan(basePackages = {"com.user.server.dao"}, sqlSessionTemplateRef = "userSqlSessionTemplate")
public class UserMybatisConfig {
 @Bean(name = "userDataSource")
 @Primary //      ,    ,          
 @ConfigurationProperties(prefix = "first.datasource") // prefix    application.properteis        
 public DataSource userDataSource() {
  return DataSourceBuilder.create().build();
 }
 @Bean
 public SqlSessionFactory userSqlSessionFactory(@Qualifier("userDataSource") DataSource dataSource) throws Exception {
  SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
  bean.setDataSource(dataSource);
  //  XML  
  ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
 try {
   bean.setMapperLocations(resolver.getResources("classpath*:com/user/server/dao/mapping/*.xml"));
   return bean.getObject();
  } catch (Exception e) {
   e.printStackTrace();
   throw new RuntimeException(e);
  }
 }
 @Bean
 public SqlSessionTemplate userSqlSessionTemplate(@Qualifier("userSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
  SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory); //        Factory
  return template;
 }
}
@Configuration
@MapperScan(basePackages = {"com.airmi.server.dao"}, sqlSessionTemplateRef = "autoTestSqlSessionTemplate")
 public class AutoTestMybatisConfig {
  @Bean
  @ConfigurationProperties(prefix = "autotest.datasource")
   public DataSource autoTestDataSource() {
   return DataSourceBuilder.create().build();
  }
  @Bean
  public SqlSessionTemplate autoTestSqlSessionTemplate(@Qualifier("autoTestSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
   SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory);
    return template;
   }
  @Bean
  public SqlSessionFactory autoTestSqlSessionFactory(@Qualifier("autoTestDataSource") DataSource dataSource) throws Exception {
   SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
   bean.setDataSource(dataSource);
   //  XML  
   ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
   try {
    bean.setMapperLocations(resolver.getResources("classpath*:com/airmi/server/dao/mapping/*.xml"));
    return bean.getObject();
   } catch (Exception e) {
    e.printStackTrace();
    throw new RuntimeException(e);
   }
  }
 }
 @Primary//이 주 해 는 같은 인터페이스 에 여러 개의 실현 클래스 를 주입 할 수 있 을 때 autowire 주 해 를 잘못 알 리 는 것 이 아니 라 기본적으로 어느 것 을 선택해 야 하 는 지 를 표시 합 니 다.홈 페이지 는 여러 데이터 원본 이 있 을 때 하나의 datasource 를 지정 해 야 하고 다른 datasource 는 추가 하지 않 아 도 됩 니 다.
@Qualifier 는 이름 에 따라 주입 합 니 다.보통 같은 여러 종류의 인 스 턴 스 를 가 진 인 스 턴 스 의 주입 입 니 다(예 를 들 어 여러 개의 DataSource 형식의 인 스 턴 스 가 있 습 니 다).

 @MapperScan (basePackages = {"com.user.server.dao"}, sqlSessionTemplateRef = "userSqlSessionTemplate") basePackages mapper    ,sqlSessionTemplateRef      。
user 코드 구 조 는 다음 과 같 습 니 다.
 
총결산
위 에서 말 한 것 은 소 편 이 소개 한 Spring Boot 통합 my batis 가 다 중 데이터 소스 를 사용 하 는 실현 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기