Spring Boot 통합 my batis 다 중 데이터 원본 사용 방법
6068 단어 mybatis다 중 데이터 원본
본 튜 토리 얼 은 실전 에 치 우 치고 프로그램 원숭이 가 직접 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 가 다 중 데이터 소스 를 사용 하 는 실현 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.