지금까지 개발업무를 보면서 마이바티스를 당연하게 많이 써왔는데, xml파일을 따로 두어
쿼리문을 작성한 뒤 데이터베이스에 접근하여 CRUD를 했더랬다. 근데 이게 XML방식만 있는게 아니라
어노테이션 방식도 있다는 것을 알게 되서 정리해본다.
1. 어노테이션 방식
============================================================================
기본문법
@Select("쿼리")
public String 메서드명();
@Insert("쿼리")
public String 메서드명();
@Update("쿼리")
public String 메서드명();
@Delete("쿼리")
public String 메서드명();
Service
@Autowired
IndexMapper indexMapper;
public void myAnnotation() {
String testTxt = indexMapper.myAnnotation();
System.out.println("annotation으로 가져온 값 : " + testTxt);
}
Mapper
@Mapper
public interface IndexMapper {
@Select("select TIMESTAMP from APPQOSSYS.WLM_CLASSIFIER_PLAN")
public String myAnnotation();
}
이렇게 끝이다. 즉 기존의 mapper.xml까지 가지 않고 Mapper에서 쿼리문까지 실행한다. @를 사용하여
어노테이션처럼 해당 메서드 위에 정의 해주고 쿼리까지 작성해준다..
2. XML 방식
============================================================================
XML방식은 어노테이션 방식과 달리 .xml에서 데이터베이스에 접근한다.
Service
@Autowired
IndexMapper indexMapper;
public void myXML() {
System.out.print("--------------server started--------------");
String testTXT = indexMapper.myXML();
System.out.println("myXML 결과 : " + testTXT);
}
Mapper
public String myXML();
XML
<mapper namespace="com.example.demo.mapper.IndexMapper">
<select id="myXML" resultType="string">
select "TIMESTAMP" from APPQOSSYS.WLM_CLASSIFIER_PLAN
</select>
</mapper>
이렇게 어노테이션과 XML방식에 대해 알아보았고, 차이점도 명확하다.
어노테이션 방식은 간단한 쿼리문 ( 단순 SELECT문, UPDATE문, INSERT문, DELETE문 ... )에 용이하고,
XML방식은 복잡한 쿼리문 ( join이 들어가거나, function(함수) 등을 이용하는.. )에 용이하다는 것이다..
그래서 상황에 따라 편할 것을 쓰면 될 거 같은데... 음.. 성능적으로 문제가 없다면 지금까지 써와서
편한 XML방식을 쓰지 않을까 싶다.. 아니면 단순조회 기능이 필요한데 .xml을 만들 필요가 없다 판단 될 때만
어노테이션을 쓰지 않을까???
'MyBatis' 카테고리의 다른 글
[MyBatis] ${ }으로 테이블명을 가져올 때 생기는 구문오류 해결방법 :: 숫자로 시작하는 테이블명 구문오류 (0) | 2022.08.22 |
---|---|
[MyBatis] 마이바티스에서 샵(#)과 달러($)의 차이점에 대하여 (0) | 2022.08.20 |
[Mybatis] 마이바티스 forEach문법을 활용한 쿼리 반복 실행에 대해 알아보자. (0) | 2022.05.25 |
[MyBatis] 마이바티스 parameterType이 String인 데이터 사용하기 ( String을 <if> 에서 사용 ) (0) | 2022.05.13 |
[MyBatis] 마이바티스 부등호(>, <, >=, <= )가 안 먹히는 현상/부등호 오류 ( CDATA ) (0) | 2022.05.01 |