안녕세계
[Spring] MyBatis 데이터베이스 연동 본문
[Spring] MyBatis 데이터베이스 연동
Junhong Kim 2020. 9. 26. 01:28
안녕하세요.
본 포스팅에서는 SpringBoot 환경에서 MyBatis와 데이터베이스를 연동하는 방법에 대해 설명합니다. 🧐
예제 프로젝트에서는 H2 데이터베이스를 사용합니다.
IntelliJ에서 제공해주는 Spring Initalizr를 사용하여 Gradle 기반 Java8 버전 프로젝트를 생성합니다.
(다음 화면은 Ultimate 버전만 제공하는 기능이므로, CE 버전을 사용하고 계시면 여기에서 생성하시면 됩니다.)
프로젝트 의존성으로 다음 내용을 추가해주세요.
- [선택] Lombok
- [필수] Spring Web
- [필수] MyBatis Framework
- [선택] H2 Database (MySQL과 같은 다른 RDMBS를 사용하셔도 됩니다.)
프로젝트를 생성하고 의존성을 다운로드하는 동안에,
우리는 H2 데이터베이스에 다음과 같이 test 테이블을 만듭시다. 🤗
다시 프로젝트로 돌아와서 다음과 같이 프로젝트 구조를 만들어 주세요.
(프로젝트 구조는 개인이 선호하는 스타일로 생성하셔도 됩니다.)
src/main/
├─ java/
│ └─ kim.junhong.expmybatish2/
│ ├─ api/
│ │ └─ test/
│ │ ├─ controller/
│ │ ├─ dto/
│ │ ├─ mapper/
│ │ └─ service/
│ ├─ config/
│ └─ ExpMybatisH2Application.java
└─ resources/
├─ mybatis/
│ └─ mapper/
├─ static/
├─ templates/
└─ application.yaml
프로젝트를 최초 생성하면 resources/application.properties로 되어있는데,
저는 yaml 형식을 더 선호하여 resources/application.yaml로 변경 후 다음과 같이 H2 데이터베이스를 설정했습니다.
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:tcp://localhost/~/test
username: sa
다음으로 DataSource 설정을 위해 DataSouceConfig.java 파일을 생성합니다.
@Configuration
@MapperScan(value = "kim.junhong.expmybatish2.api.**.mapper" // mapper 인터페이스 경로 (경로를 반드시 잘 확인해주세요!)
,annotationClass = Mapper.class // 스캔할 어노테이션 이름
,sqlSessionFactoryRef = "sqlSessionFactory") // sqlSessionFactory Bean 이름
public class DataSourceConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource, ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:mybatis/mapper/**/*.xml")); // sql XML 위치
return sqlSessionFactoryBean.getObject();
}
}
여기까지 진행하셨다면 SPringBoot 환경에서 MyBatis를 사용하기 위한 준비가 모두 완료되었습니다.
그럼 다음 포스팅에서는 실제 mapper 클래스를 생성하고 이를 기반으로 CRUD API를 생성해봅시다. 🤓
감사합니다.
'Server > Spring' 카테고리의 다른 글
[Spring] 그라파나와 로키로 애플리케이션 로그 조회하기 (0) | 2023.04.22 |
---|---|
[Spring] 그라파나와 프로메테우스로 애플리케이션 모니터링하기 (0) | 2023.04.09 |
[Spring] EventListener vs TransactionalEventListener (0) | 2023.03.08 |
[Spring] MyBatis API 개발 예제 (0) | 2020.09.27 |
[Spring] Docker 컨테이너 배포 (with. Gradle) (0) | 2020.01.05 |