spring boot my batis 다 중 데이터 소스 솔 루 션 프로 세 스 분석
DEMO 프로젝트 를 소개 합 니 다.사용 하 는 spring boot 통합 my batis,my batis 조회 데이터 베 이 스 는 주해 형식 으로 조회 되 며,목적 은 두 개의 데이터 베이스 test 1 과 test 2 의 사용자 정 보 를 조회 하고 콘 솔 에서 인쇄 합 니 다.
1.pom 파일
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>5.1.27</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>
**/*.xml
</include>
</includes>
</resource>
<resource>
<directory>src/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
그 중에서 알 리 바 바 의 druid 데이터 원본 을 추 가 했 습 니 다.spring boot 의 기본 hikacp 대신 my sql 의 구동 버 전 번 호 는 자신 이 사용 하 는 my sql 버 전 번호 와 일치 해 야 합 니 다.그 중에서 build 모듈 안의 resources 안 은 spring boot 이 src/main/자바 의 XML 파일 을 걸 러 내 는 것 을 방지 하기 위해 서 입 니 다.왜냐하면 어떤 사람들 은 my batsi 가 데이터 베 이 스 를 조회 할 때 XML 맵 파일 을 사용 하 는 것 을 좋아 하지만 우 리 는 이번에 주석 형식 을 사용 하기 때문에2.사용자 클래스
public class User {
public Integer id;
public String name;
public String address;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
//get set ...........
}
사용자 클래스 는 할 말 이 없고 기본 적 인 몇 가지 속성 입 니 다.3.application.properties 파일 설정
spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.one.username=root
spring.datasource.one.password=123456
spring.datasource.one.url=jdbc:mysql://localhost:3306/test1
spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.two.username=root
spring.datasource.two.password=123456
spring.datasource.two.url=jdbc:mysql://localhost:3306/test2
여 기 는 주로 두 개의 데이터베이스 에 접근 하 는 속성 을 설정 합 니 다.두 개의 접두사 가 다 르 기 때문에 아래 에서 spring boot 와 같은 보안 속성 을 사용 하여 서로 다른 데이터 원본 을 만 드 는 데 편리 합 니 다.4.접두사 에 따라 데이터 원본 생 성
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.one")
public DataSource dsOne(){
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.two")
public DataSource dsTwo(){
return DruidDataSourceBuilder.create().build();
}
}
이 종 류 는 홈 디 렉 터 리 의 config 디 렉 터 리 아래 에 있 습 니 다.@ConfigurationProperties 주 해 를 사용 하여 해당 하 는 DataSource 가 만 들 때 사용 하 는 프로필 의 내용 을 표시 합 니 다.5.홈 디 렉 터 리 아래 에 각각 mapper 1 과 mapper 2 패 키 지 를 만 들 고 해당 하 는 패키지 아래 에 해당 하 는 데이터 계층 접근 인터페이스 UserMapper 1 과 UserMapper 2 를 만 듭 니 다.내용 은 다음 과 같 습 니 다.
@Mapper
public interface UserMapper1 {
@Select("select * from users")
List<User> getAllUser();
}
이 인터페이스 에 서 는 간단 한 my tatis 의 주 해 를 바탕 으로 모든 사용자 의 인 터 페 이 스 를 조회 하 는 것 이 라 고 할 수 없다.6.config 패키지 아래 에 서로 다른 설정 류 MybatisConfigOne 과 MybatisConfigTwo 두 가지 종 류 를 만 들 고 각각 mapper 1 과 mapper 2 두 경로 아래 의 dao 층 인 터 페 이 스 를 스 캔 합 니 다.
@Configuration
@MapperScan(basePackages = "com.hopec.mybatis.mapper1",sqlSessionFactoryRef = "sqlSessionFactory1",
sqlSessionTemplateRef = "sqlSessionTemplate1")
public class MybatisConfigOne {
@Autowired
@Qualifier("dsOne")
DataSource ds1;
@Bean
SqlSessionFactory sqlSessionFactory1(){
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(ds1);
try {
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
SqlSessionTemplate sqlSessionTemplate1(){
return new SqlSessionTemplate(sqlSessionFactory1());
}
}
public class MybatisConfigTwo {
@Autowired
@Qualifier("dsTwo")
DataSource ds2;
@Bean
SqlSessionFactory sqlSessionFactory2(){
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(ds2);
try {
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
SqlSessionTemplate sqlSessionTemplate2(){
return new SqlSessionTemplate(sqlSessionFactory2());
}
}
7.테스트
@SpringBootTest
class MybatisApplicationTests {
@Autowired
UserMapper1 userMapper1;
@Autowired
UserMapper2 userMapper2;
@Test
void contextLoads() {
List<User> users = userMapper1.getAllUser();
System.out.println(users);
List<User> allUser = userMapper2.getAllUser();
System.out.println(allUser);
}
}
테스트 결과:여러 개의 데이터 원본 을 사용 하려 면 계속 증가 하면 됩 니 다.ok,큰 성 과 를 거 두 었 습 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.