목차
0. 환경
- windows10
- openjdk version "11" 2018-09-25
- IntelliJ Tool
- Spring Boot 2.5.6
- Gradle Project
- MyBatis + Mysql + HikariCP를 이용해 DB(Mysql) 연동할 프로젝트입니다.
1. DB 연결 정보 설정
- resources/application.properties에 다음과 같이 본인의 Mysql DB 연결 정보를 입력합니다.
spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.hikari.url=jdbc:mysql://localhost:3306/?autoReconnect=true&useSSL=false&&serverTimezone=UTC
spring.datasource.hikari.username=root
spring.datasource.hikari.password=******
2. HikariCP 설정
- com/test/api/config/DBConfig.java
- 스프링 부트가 아닌 스프링에서는 일반적으로 xml파일을 이용해 사용하지만 스프링 부트에서 application.properties 또는 클래스를 만들어서 사용합니다.
- MyBatis와 HikariCP 연동을 위한 설정 클래스 파일(DBConfig.java) 생성합니다.
package com.test.api.config;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
@Configuration
@PropertySource("classpath:/application.properties")
public class DBConfig {
@Autowired
private ApplicationContext applicationContext;
@Bean
@ConfigurationProperties(prefix="spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
@Bean
public DataSource dataSource() throws Exception {
DataSource dataSource = new HikariDataSource(hikariConfig());
return dataSource;
}
}
- 스프링 부트를 실행합니다. 콘솔에 다음과 같이 출력되면 HikariCP를 이용해 DB 접속이 된 것입니다.
3. MyBatis 설정
- MyBatis 설정 관련 빈으로 com/test/api/config/DBConfig.java 파일에 추가로 작성합니다.
@Configuration
@PropertySource("classpath:/application.properties")
public class DBConfig {
//( ... ) 생략
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setTypeAliasesPackage("com.test.api.domain");
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/*.xml"));
return sqlSessionFactoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
[MyBatis DTO Alias]
- MyBatis를 이용해 DB(Mysql)에서 읽어온 데이터를 담아올 도메인(DTO)의 패키지 경로를 설정하게 되면 Mapper 파일에 편하게 클래스 명만 작성해서 사용할 수 있습니다.
- 해당 설정에 맞게 패키지를 미리 생성해 줍니다.
- com.test.api.domain
sqlSessionFactoryBean.setTypeAliasesPackage("com.test.api.domain");
#설정 하지 않을 경우 Mapper 파일의 resultType
<select id="test" parameterType="map" resultType="com.test.api.domain.Test">
SELECT id, macaddress, ip
FROM node
LIMIT #{from}, #{to}
</select>
#설정 할 경우 Mapper 파일의 resultType 타입
<select id="test" parameterType="map" resultType="Test">
SELECT id, macaddress, ip
FROM node
LIMIT #{from}, #{to}
</select>
[mapper 파일 경로]
- 쿼리를 작성할 mapper 파일을 생성해 둘 경로입니다. 해당 경로에 맞게 mapper 디렉터리를 생성해주세요.
- resources/mapper
- 해당 경로에. xml로 끝나는 파일들을 스캔해서 설정합니다.
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/*.xml"));
'Backend > Spring' 카테고리의 다른 글
[Spring Boot] MyBatis 사용법 (DAO) (0) | 2021.11.21 |
---|---|
[Spring Boot] MyBatis 사용법 (@Mapper, @MapperScan) (2) | 2021.11.20 |
[Spring Boot] 프로젝트 생성 (start.spring.io) (0) | 2021.11.15 |
[Spring] Spring MVC Project DB 연결 정보 암호화 (Jasypt, properties) (0) | 2021.10.31 |
[Spring] Spring MVC Project 스케쥴링 설정 (Spring Quartz) (0) | 2021.10.30 |