Development

Spring Boot MyBatis mapUnderscoreToCamelCase 설정

열린기술자·2019년 9월 4일·조회 10,520

1. 개요

DB 컬럼명에 _ (Underscore)가 포함되어 있을 때 이를 자동으로 카멜 표기법의 DTO와 매핑해주기 위해 설정을 추가한다.

예: USER_NAME 컬럼

    -> getUserName();


2. mapUnderscoreToCamelCase 설정

DB 컬럼명에 _ (Underscore)가 포함되어 있을 때 이를 자동으로 카멜 표기법의 DTO와 매핑해준다. 만약 이 설정이 없으면 _ (Underscore)가 포함된 컬럼의 값은 null로 리턴된다.

3. Spring Boot에서 mapUnderscoreToCamelCase 설정

3.1. resource 하위에 mybatis-config.xml 파일

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <settings>
    <setting name="mapUnderscoreToCamelCase" value="true" />
  </settings>
</configuration>

3.2. SessionFactory

	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
		final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
		sessionFactory.setDataSource(dataSource);
		PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		sessionFactory.setMapperLocations(resolver.getResources("classpath:mybatis/mapper/**/*.xml"));
	    
		Resource myBatisConfig = new PathMatchingResourcePatternResolver().getResource("classpath:mybatis-config.xml");
		sessionFactory.setConfigLocation(myBatisConfig);
		
		return sessionFactory.getObject();
	}

원래 코드에 다음 부분이 추가된 것이다.

Resource myBatisConfig = new PathMatchingResourcePatternResolver().getResource("classpath:mybatis-config.xml");
sessionFactory.setConfigLocation(myBatisConfig);

사실 구글링 결과로는 따로 config 파일 빼서 처리하지 않고 아래를 추가해도 된다고 하는데 뭘 잘못했는지 안됐다.

Properties properties = new Properties();
properties.put("mapUnderscoreToCamelCase", true);
sessionFactory.setConfigurationProperties(properties);

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.