본문 바로가기
Spring

Spring Starter Project와 MySQL연동

by doriver 2022. 12. 6.

1. MyBatis이용

의존성

dependencies {
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
    runtimeOnly 'mysql:mysql-connector-java'
}

 

Mapper Interface

Mapper.xml에 있는 SQL 쿼리문을 호출하기 위한 인터페이스
( @Mapper 어노테이션을 사용하여 빈으로 등록, Service단에서 Autowired 하여 사용 )


인터페이스 이름을 Mapper.xml 파일의 mapper namespace값과 맞춰준다
메소드 명은 Mapper.xml 파일의 id와 맞춰준다.

 

@Mapper
매퍼 등록을 위한 인터페이스에 선언하여 사용한다.

 

@MapperScan
매퍼를 하나씩 등록하는게 아닌 패키지 경로를 지정하여 이하 위치에있는 인터페이스들은 전부 맵퍼로 사용할수있다.

 

package com.sns.invest.config;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
@MapperScan(basePackages="com.sns.invest.*")
public class DatabaseConfig {
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);

        Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*Mapper.xml");
        sessionFactory.setMapperLocations(res);

        return sessionFactory.getObject();
    }
}

 

2. Jpa 이용

의존성

dependencies {
    runtimeOnly 'mysql:mysql-connector-java'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}