모델과 DB의 매개체
자바 소스코드 안에 SQL문을 작성하면 코드가 길어지고 유지보수 및 분업이 쉽지 않다. 이러한 문제를 해결하기 위해 MyBatis를 사용하는데, MyBatis는 기존 JDBC 방식과는 다르게 SQL문을 XML 파일에 작성함으로써 코드가 줄어들고 SQL문 수정이 편해진다. 또한 DBCP를 사용하여 커넥션을 여러개 생성하기 때문에 JDBC만 사용하는 것보다 작업 효율과 가독성이 좋아진다.
mybatis 패키지에 config.xml과 SqlMapConfig.java 설정파일을 만들어 사용한다.
SqlMapConfig.java
static 블럭을 사용해 최초 실행시 SqlSessionFactory를 생성한다.
config.xml
DB연결의 기본 설정을 하고 SQL문이 적힌 xml파일을 매핑한다.
DAO 클래스에서는 SQL문을 실행하는 메서드만 존재하고 SQL문은 모두 xml파일로 따로 뺀다.
..DAO.java
// 회원가입
public boolean join(UserDTO newUser){
int result = sqlsession.insert("User.join", newUser);
return result == 1;
}
파라미터를 넘겨줄 때 ("namespace.id", 파라미터) 의 형식으로 넘겨주고, xml파일에 정의되어 있는 SQL문 중 일치하는 namespace와 id를 가진 SQL문이 실행된다.
...xml
<!-- 회원가입 메서드 호출시 실행될 SQL문 -->
<mapper namespace="User">
<insert id="join" parameterType="com.minsung.dto.UserDTO">
INSERT INTO MYBATIS_TEST_USER VALUES(#{userid}, #{userpw}, #{username})
</insert>
</mapper>
넘겨받는 파라미터 타입이 UserDTO 타입인 newUser이기 때문에 parameterType은 그 UserDTO의 경로를 써준다. 이 때 경로가 너무 길어지는 것을 방지하기 위해 config.xml 파일에
<typeAlias>
태그를 통해 별칭을 설정해서 사용할 수 있다.위의 예시코드에서는 insert문이기 때문에 parameterType밖에 없지만 select문 같은 경우에는 parameterType 뿐만 아니라 resultType까지 명시해 주어야 한다.