'스프링부트'에 해당되는 글 1건

  1. 2021.02.26 인텔리J 스프링부트, MyBatis CamelCase 적용하기
Java & Spring2021. 2. 26. 10:21

# 작업환경 IntelliJ, SpringBoot 2.4.3, gradle 기반, Java 13

 

# TEST_ID -> testId 형식의  CamelCase 적용하기

 

기존 레거시에서는 ObjectMapperFactory 구현과 MapWrapper 상속을 이용해서

hashmap에 들어간 key를 바꾸는 방법을 사용했는데 부트에서는 좀 더 다른 방법을 써보기로 했다.

 

다만, 아래와 같은 방법으로 하면 resultType을 hashmap이 아닌 구현한 객체 이름으로 바꿔줘야 한다.

 

1. 내가 사용한 방법은 guava 라이브러리를 활용, 따라서 build.gradle에 해당 라이브러리를 등록했다.

dependencies {
    // ...
    implementation group: 'com.google.guava', name: 'guava', version: '30.1-jre'
}

 

2. 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>
  <typeAliases>
    <typeAlias type="packagename.mybatis.CamelHashMap" alias="CamelHashMap" />
  </typeAliases>
</configuration>

- 기타 설정은 필요없어서 날리고 생성할 객체만 typeAlias로 지정해주었다.

 

3. application.properties 에 mybatis-config.xml 등록하기

mybatis-config.xml 의 위치

파일의 경로를 아래와 같이 등록했다.

# Mybatis
mybatis.config-location=classpath:mybatis/mybatis-config.xml

 

4. CamelHashMap 클래스 생성 및 기능 구현

public class CamelHashMap extends HashMap<String, Object> {
  public Object put(String key, Object value) {
    return super.put(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, key), value);
  }
}

 

5. 결과

ABC_DE가 abcDe의 형태로 변환된 결과

 

※ varchar의 결과가 위와 같이 byte 형식으로 반환된 것은 마리아db의 버전이 낮아서일까.. (10.1.x)

  10.4.x에서는 정상적인 문자열로 반환이 된다. 

  위 경우 byte 를 String 형태로 다시 변환하는 작업을 해야 하는데, 그냥 vo를 사용할까 싶다.

  (해결 방법을 도저히 찾을 수가 없음)

 

- 이상 끗

Posted by 홍규홍규