지석이의 일기
Spring Boot 프로젝트에 Mysql연결하기 본문
저번에 만든 SpringBoot 프로젝트와 MysqlDB를 서로 연결해보자.
1. 의존성 주입
의존성 주입을 위해 pom.xml을 수정해준다.
mysql 외에 mybatis를 사용하기위에 2개를 넣어준다.
https://mvnrepository.com/ 에서 검색하여, 제일 사용량이 많은걸로 해준다.
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
위 두개 의 dependency를 pom.xml에 넣어준다.
mysql-connector-java = JAVA 가 MySQL과 통신할 수 있게하는 드라이버
mybatis-spring-boot-starter = Spring Boot 용 Mybatis
넣고 maven update를 해준다.
2. 소스 수정 및 클래스 생성
그리고 mybatis와 db 환경 정보들을 입력하자.
application.properties에 두 정보들을 입력하자.
# database
spring.datasource.jdbc-url = jdbc:mysql://{DB_IP}:{DB_PORT}/{DBNAME}?serverTimezone=UTC&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8
spring.datasource.username= id
spring.datasource.password= passward
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
spring.datasource.mapper-locations: classpath:/mybatis/mapper/*.xml
# Mybatis mapper 위치 설정
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.config-location = classpath:/mybatis/mybatis-config.xml
spring.datasource.jdbc-url 값뒤에 GET방식으로 붙히는 것들은 서버 환경설정값들인데, 한국에서 서비스할꺼면 기본적으로 넣어주자.
spring.datasource.mapper-locations 은 실제로 application.properties에서 인식되는 값이 아니고, 뒤에서 설정할 DBconfing 에서 사용할 변수이다.
DBconfing 는 꼭 만들어줘야 하기로 하자.
컨트롤러 생성해서 클라이언트에서 들어올 창구(?)를 만들자!
서비스 컨트롤러를 만들고, 이어서 인터페이스 맵퍼까지 만들어주자.
![]() |
![]() |
클라이언트 요청-> 컨트롤러 -> 서비스 -> 맵퍼 -> DB -> 맵퍼 -> 서비스 -> 컨트롤러 -> 클라이언트 응답
이런순으로 하나의 트랜젝션이다.
이후 SqlSessionFactory와 SessionTemplate을 생성해 줘야 하기때문에 DBconfigClass를 만들어줘야한다
@Configuration
@MapperScan(value = "com.marsPhoto.www.mapper.*", sqlSessionFactoryRef = "SqlSessionFactory")
public class DbConfig {
@Value("${spring.datasource.mapper-locations}")
String mPath;
// mybatis 설정 파일을 따로 작성해서 임포트할 예정 - snake_case -> camelCase 를 위함
@Value("${mybatis.config-location}")
String mybatisConfigPath;
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "SqlSessionFactory")
public SqlSessionFactory SqlSessionFactory(@Qualifier("dataSource") DataSource DataSource, ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(DataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources(mPath));
sqlSessionFactoryBean.setConfigLocation(applicationContext.getResource(mybatisConfigPath));
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "SessionTemplate")
public SqlSessionTemplate SqlSessionTemplate(@Qualifier("SqlSessionFactory") SqlSessionFactory firstSqlSessionFactory) {
return new SqlSessionTemplate(firstSqlSessionFactory);
}
}
@Value("${spring.datasource.mapper-locations}")은 위에 application.properties에서 호출해 온다.
해당 configClass까지 삽입하면 파일구조는다음과 같다
다음과 같은 구조에서 /mybatis/mapper/*.xml 중 하나 를보면
단순히 db가 연결된건지 확인 하는 것이라 dual에서 1을 찾아보자
DBconfig을 잊어버려 bean을 만들어주지 않으면 mapper에서 계속 null이 뜰것이다.
3. 간단한 테스트!
해당 컨트롤러를 호출하여 select 1 from dual이 호출됬는지보자!
이렇게 간단하게 mysql 을 연결하고 mybits 및 스프링 부트를 연동해 보았다.
'Java' 카테고리의 다른 글
로그백 Logback과 log4jdbc 로그파일로 적재해보자. (0) | 2023.01.28 |
---|---|
Spring Boot 의 DB에서 조회뒤 view로 넘겨보자 (0) | 2023.01.15 |
5. AWS서버에 DB를 설치해서 DB서버로 만들어보자 (0) | 2022.03.17 |
AWS 서버에 스프링 부트 프로젝트를 올려서 구동시켜보자. (0) | 2021.07.11 |
Spring boot 프로젝트를 생성하고, AWS 서버에 올려보자 (0) | 2021.07.11 |