java
Mybatis 에서 model 에서 innerClass 를 사용하려면??
두리공장
2022. 7. 28. 19:53
필요에 따라서는 VO를 계속 만들지 않고 innerClass를 사용하는 경우가 있다.
innerClass 는 아래의 형태와 같다.
@Data
public class CommonVO {
@Getter
@Setter
public static class BOOK {
private String column1;
private String column2;
private String column3;
private String column4;
}
}
그런데, mybatis에서 이러한 모양의 모델을 불러와야 할 경우에, alias가 안먹는 경우가 있다.
이때에는 아래와 같이 정의해 준다.
<typeAlias type="com.xxx.vo.CommonVO$BOOK" alias="CommonVO$BOOK" />
이렇게 하면, mapper에서 아래와 같이 사용할 수 있다.
<select id="getBOOK" parameterType="CommonVO$BOOK" resultType="CommonVO$BOOK">
여담으로, RestAPI로 사용할 경우, 필드값에 null이 있을 경우 json에서 보이지 않는 경우도 있다. 하지만, 빈 값으로라도 보이게 하려면 아래와 같이 셋팅한다.
<settings>
<setting name="callSettersOnNulls" value="true"/>
<setting name="jdbcTypeForNull" value="VARCHAR" />
</settings>