Collective Intelligence

[MyBatis] DAO 클래서에서 객체와 파라미터 사용 방법 본문

개발/MyBatis

[MyBatis] DAO 클래서에서 객체와 파라미터 사용 방법

유경파 2017. 2. 15. 14:13

Dao 클래스에서 MyBatis mapper에서 사용할 파라미터를 넘기는 방법.



1. 파라미터만 하나인 경우



public void countQuery(@Param("name")String parameter);


이렇게 @Param 어노테이션을 붙이면 본인이 원하는 명으로 mapper에서 사용할 수 있다. 위와 같은 경우는 #{name}이 되겠다.


물론, 어노테이션을 쓰지 않아도 mapper에서 #{param1} 이라던지, #{parameter} 로 파라미터 명을 적으면 사용이 가능하다.




2. 파라미터가 여러개일 경우


public void countQuery(@Param("name1"} String parameter, @Param("name2") String parameter2);



 1번의 경우와 비슷하게 각각 어노테이션으로 이름을 정하면 mapper에서도 그대로 사용할 수 있다.


 물론, 어노테이션을 쓰지 않으면 #{param1}, #{param2}로 쓸 수 있는데 순서를 기억하기도 힘들고 소스가 오히려 더 복잡해진다.




3. 파라미터가 객체인 경우 



public void countQuery(TestObject object);




저런 객체가 mapper로 넘어가게되면 저 객체안에 attribute 이름을 그대로 쓸 수 있다.

저 object 안에 String name, String address 등이 정의되어 있다면 mapper에서 그대로 #{name}, #{address}라고 쓰면 된다.




4. 객체와 파라미터를 같이 쓸 경우



public void countQuery(@Param("name1"} TestObject object, @Param("name2") String parameter2);



가끔씩 저렇게 객체와 파라미터를 동시에 써야 할 경우가 있다.

이런 경우에는 3번의 경우처럼 하면 에러가 나기 때문에 위에처럼 어노테이션을 사용해서 이름을 정의하고 mapper에서 이렇게 쓰면 된다.

객체의 경우 어노테이션으로 정한 이름 뒤에 점을 붙이고 attribute 이름을 쓰면 되고, 파라미터는 그냥 파라미터 이름을 쓰면 된다.


<select id="test" resultType="String">
          SELECT name
          FROM testTable
          WHERE name = #{name1.name}
          AND parameter = #{parameter2}
 </select>


'개발 > MyBatis' 카테고리의 다른 글

클래스 자체를 resultType으로 쓰기  (0) 2016.03.31