MyBatis Mapper XML 파일

CHM·2022년 6월 21일
0

Spring

목록 보기
20/26

Mapper XML 파일

  • MyBatis의 가장 큰 장점은 매핑 파일
  • SQL 문을 저장하는 존재를 매핑파일이라고 함
  • JDBC 코드에 비하면 코드 수가 95% 이상 감소하기도 함
  • SQL 작성에 집중할 수 있도록 만들어짐

XML Mapper 작성

  • DAO 클래스에서 XML Mapper를 사용하게 됨
  • DAO의 SQL문이 Database로 전달이 되게 되던 것을 이 SQL문을 XML Mapper가 대신해주게 된다.
  • 작성 순서
    1. XML로 작성된 Mapper 위치(저장경로) 결정
    2. XML Mapper 파일을 작성하고 필요한 DTD 추가(템플릿 파일 사용)
    3. 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>
  • 다른 구문에서 위 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 라이브러리 의존성을 추가해주어야 함.

0개의 댓글