mybatis에서 ENUM 받아 사용하기

사용자에게 데이터를 받을 때 DTO의 필드에 ENUM이 존재하는 경우가 있다. ENUM을 이용해 동적쿼리를 작성하는 방법을 알아보자.

 

자동차를 갖고 있다면 자동차 종류를 ENUM으로 사용해 관련된 쿼리를 작성하고 싶을 수 있다.

 

Mapper.java

List<MyCar> selectCars(Car car);

Car가 Enum이다.

 

Car.java

public enum Car {
	truck, racing, sport;
}

 

Mapper.xml

<choose>
    <when test="car == null">
        ...
    </when>
    <when test="car.name().equals('truck')">
        ...
    </when>
    <when test="searchKey.name().equals('sport')">
        ...
    </when>
    <otherwise>
        ...
    </otherwise>
</choose>

이런식으로 하면 된다.

 

쌍따옴표와 따옴표는 서로 위치가 바뀌어도 상관없다. name 대신 toString을 사용해도 된다.

ENUM은 

 

참고

https://stackoverflow.com/questions/12933813/using-enum-parameters-in-mybatis-dynamic-sql