Mapper XML 파일
- MyBatis의 가장 큰 장점은 매핑 파일
- SQL 문을 저장하는 존재를 매핑파일이라고 함
- JDBC 코드에 비하면 코드 수가 95% 이상 감소하기도 함
- SQL 작성에 집중할 수 있도록 만들어짐
XML Mapper 작성
- DAO 클래스에서 XML Mapper를 사용하게 됨
- DAO의 SQL문이 Database로 전달이 되게 되던 것을 이 SQL문을 XML Mapper가 대신해주게 된다.
- 작성 순서
- XML로 작성된 Mapper 위치(저장경로) 결정
- XML Mapper 파일을 작성하고 필요한 DTD 추가(템플릿 파일 사용)
- SQL 작성
Select문
- MyBatis에서 가장 많이 사용하는 element
<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID=#{id}
</select>
- 위 쿼리의 이름은 selectPerson, 파라미터는 int이고 결과 데이터는 HashMap에 저장됨.
Insert, Update, Delete
<insert
id="insertAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
keyProperty=""
keyColumn=""
useGeneratedKeys=""
timeout="20">
<update
id="insertAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
timeout="20">
<delete
id="insertAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
timeout="20">
<insert id="insertAuthor">
insert into Author (id,username,password,email,bio)
values (#{id}, #{username}, #{password}, #{email}, #{bio});
</insert>
Sql문
- 다른 구문에서 재사용 가능한 SQL 구문을 정의함
<sql id="userColumns"> id,username,password</sql>
<select id="selectUsers" resultType="map">
select <include refid="userColumns"/>
from some_table where id="{id}
</select>
Result Maps
- 데이터베이스에서 데이터를 가져올 때 작성되는 JDBC 코드를 대부분 줄여주는 역할
<select id="selectUsers" resultMap="UserMap">
select user_id, user_name, user_password
from users
where id=#{id}
</select>
- 위 쿼리는 아래의 resultMap에 저장된다
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id"/>
<result property="username" column="user_name"/>
<result property="hashedPassword" column="user_password"/>
</resultMap>
- 이 resultMap은 type에 기반하는데, User 클래스를 참조한다는 의미
Log4jdbc-log4j2
- MyBatis의 로그를 보다 자세히 확인 가능하게 해줌
- 사용을 위해 Log4jdbc-log4j2 라이브러리 의존성을 추가해주어야 함.