고똘이의 IT 개발이야기

안녕하세요.

 

오늘은 스프링 프로젝트를 하면서 mysql과 연결을 하고 싶은데

 

설정에 대해서 서투른 분들을 위해 간단한 설명과 소스로 공유드립니다.

 

전체적으로 소스에 설명을 달아 놨으니 이해하기 쉬우실 겁니다.

 

1. build.gradle에 dependencies를 추가합니다.

   추가 후 gradle refresh를 해줍니다.

1
2
3
4
5
6
7
8
 
runtimeOnly 'mysql:mysql-connector-java'
 
/* Mybatis */
    compile group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.1.1'
    compile group: 'org.mybatis', name: 'mybatis', version: '3.5.1'            
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

2. 우선 패키지 경로를 생성하고 리소스의 경로도 생성 해줍니다. 

3. Config를 설정 해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
@Configuration
@Lazy
@EnableTransactionManagement
// Interface(mapper)가 있는 package 경로
@MapperScan(basePackages= "com.example.test.api.dao")
public class DatabasConfig {
 
    /**
     * Session Factory 설정
     */
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        // 리졸버에 등록된 패키지 하위의 dao 클래스를 스캔합니다.
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
 
        // 오른쪽에 있는 리소스 경로에 들어감(src/main/resources)      
        sessionFactory.setMapperLocations(resolver.getResources(
            // 실제 쿼리가 들어갈 xml 패키지 경로
            "com/example/test/api/dao/mapper/*Mapper.xml"
        ));
 
        // Value Object를 선언해 놓은 package 경로
        sessionFactory.setTypeAliasesPackage( "com.example.test.api.vo" );
        return sessionFactory.getObject();
    }
 
    /**
     * Mybatis template 설정
     */
    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception {
        SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
        // underscore를 camelCase로 매칭 : 예) user_id -> userId
        sqlSessionTemplate.getConfiguration().setMapUnderscoreToCamelCase(true);
        // Insert시 생성되는 pk를 bean으로 반환
        sqlSessionTemplate.getConfiguration().setUseGeneratedKeys(true);
        return sqlSessionTemplate;
    }
    
    /** 
    * 트랜잭션 매니저 설정
    */
    @Bean(name = "transactionManager")
    public PlatformTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
    
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

4. application.propertis에 접속 정보를 적어줍니다.

1
2
3
4
5
6
7
8
9
10
11
 
# jdbc connect
# 포트 뒤에 test의 경우는 db scheme 입니다.                 (scheme)
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF8
spring.datasource.username=test
spring.datasource.password=test
spring.datasource.validationQuery="SELECT 1"
spring.datasource.testOnBorrow="true"
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

위와 같이 4개의 작업을 하시면 정상적으로 mysql jdbc connection이 됩니다.

 

감사합니다.

 

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band