* 선행으로는
- MySql 설치
- MySql, HikariCP 설정
1. /board/src/main/java/board/configuration/DatabaseConfiguration.java 에 해당 내용 추가한다.
- spring-mybatis 에서 SqlSessionFactory 생성위해 SqlSessionFactoryBean 사용
만약 스프링이 아닌 MyBatis 단독으로 사용할 경우에는 SqlSessionFactoryBuilder를 사용
- SqlSessionTemplate 사용 이유는 Thread-Safe를 지원하기 때문에 주입 한번으로
트랜잭션 관리 및 여러 dao에서 공유하여 사용가능
//spring-mybatis 에서 SqlSessionFactory 생성위해 SqlSessionFactoryBean 사용
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//앞에서 만든 데이터 소스 설정
sqlSessionFactoryBean.setDataSource(dataSource);
//mybatis 매퍼(Mapper)파일 위치 설정
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/**/sql-*.xml"));
return sqlSessionFactoryBean.getObject();
}
2. /board/src/main/resources 아래에 xml 설정파일 관련 폴더인 mapper 패키지 생성하기
위에서 이렇게 위치 설정했다...
- classpath : resources 폴더 의미
- /mapper/**/ : mapper 폴더 아래 모든 폴더 의미
- /sql-*.xml : 이름이 sql-로 시작하고 확장자가 xml인 파일
//mybatis 매퍼(Mapper)파일 위치 설정
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/**/sql-*.xml"));
** 총 소스
package board.configuration;
import javax.sql.DataSource;
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 com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@PropertySource("classpath:/application.properties") //설정파일 위치지정
public class DatabaseConfiguration {
@Autowired
private ApplicationContext applicationContext;
//application.properties에 설정한 디비정보 사용하게 지정
//prefix에 설정된데로 spring.datasource.hikari로 시작하는 설정을 이용해서 히카리CP 설정파일 만듬
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
//앞에서 만든 히카리CP의 설정파일을 이용하여 디비와 연결하는 데이터소스 생성
@Bean
public DataSource dataSource() throws Exception{
DataSource dataSource = new HikariDataSource(hikariConfig());
System.out.println(dataSource.toString());
return dataSource;
}
//spring-mybatis 에서 SqlSessionFactory 생성위해 SqlSessionFactoryBean 사용
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//앞에서 만든 데이터 소스 설정
sqlSessionFactoryBean.setDataSource(dataSource);
//mybatis 매퍼(Mapper)파일 위치 설정
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/**/sql-*.xml"));
return sqlSessionFactoryBean.getObject();
}
//SqlSessionTemplate는 Thread-Safe를 지원하기 때문에 주입 한번으로 트랜잭션 관리 및 여러 dao에서 공유하여 사용가능
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
참조) https://lasbe.tistory.com/123
'SpringBoot > (책)스프링부트 시작하기' 카테고리의 다른 글
[springboot] 3-3. springboot mybatis typeAliases 설정하기 (0) | 2023.04.23 |
---|---|
[springboot ] 5. Spring-Boot에 mapper 만들기 (0) | 2023.04.22 |
[springboot ] 4. Spring-Boot에 Lombok 설치 및 연동 (0) | 2023.04.22 |
[springboot] 3-2. springboot MySql mybatis 카멜 표기법 설정하기 (0) | 2023.04.22 |
[springboot] 2. springboot MySql 히카리CP 연결하기 (0) | 2023.04.21 |