1. 의존성 추가
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
2. Mapper 폴더 생성
- Mapper 폴더가 존재하지 않을경우, 오류가 발생.
3. MapperScan용 Annotation 추가
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface StoreMapper {
}
4. MyBatis 설정 추가
@Configuration
@RequiredArgsConstructor
@MapperScan(
basePackages = Constants.BASE_PACKAGE
, annotationClass = StoreMapper.class
, sqlSessionTemplateRef = "sqlSessionTemplate"
)
public class MyBatisConfig {
private final ApplicationContext applicationContext;
@Primary @Bean
SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setCacheEnabled(false);
configuration.setDefaultExecutorType(ExecutorType.REUSE);
configuration.setDefaultStatementTimeout(25);
configuration.setMapUnderscoreToCamelCase(true);
configuration.setJdbcTypeForNull(JdbcType.NULL);
configuration.setCallSettersOnNulls(true);
Resource[] mapperLocations = ArrayUtils.addAll(
applicationContext.getResources("classpath:/mapper/store/**/*.xml")
);
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setConfiguration(configuration);
sqlSessionFactoryBean.setMapperLocations(mapperLocations);
return sqlSessionFactoryBean.getObject();
}
@Primary @Bean
SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
- config 관련 설정은 아래 링크 참조.
https://mybatis.org/mybatis-3/ko/configuration.html#settings
mybatis – 마이바티스 3 | 매퍼 설정
매퍼 설정 마이바티스 XML 설정파일은 다양한 설정과 프로퍼티를 가진다. 문서의 구조는 다음과 같다.: configuration properties 이 설정은 외부에 옮길 수 있다. 자바 프로퍼티 파일 인스턴스에 설정할
mybatis.org
5. 사용
- interface Dao 추가 예시
-- @StoreMapper 선언시에만 MyBatis mapper scan이 수행되어짐.
@StoreMapper
@Mapper
public interface MainDao {
}
- mapper.xml 추가 예시
-- namespace는 Dao의 패키지명과 동일하여야 함.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="co.kr.store.bo.main.main.MainDao">
</mapper>
'[Java] > [Spring]' 카테고리의 다른 글
[SpringBoot] Database Logging 설정 (0) | 2024.08.27 |
---|---|
[SpringBoot] Logback 설정 (0) | 2024.08.27 |
[SpringBoot] Jasypt 설정( 프로퍼티 암호화 ) (0) | 2024.08.26 |
[SpringBoot] Thymeleaf 설정 (0) | 2024.08.26 |
[SpringBoot] Database Connetion 설정 (0) | 2024.08.26 |