IT'S YU
[MyBatis] Mapper XML 파일 설정 본문
지난 시간과 크게 다른 부분이 없기에 추가된 부분만 기록했다.
1. resultMap 속성 사용
- 검색결과를 특정 자바 객체에 매핑하여 리턴하기 위해서 paramType 속성을 사용한다. 그러나 검색 결과를 parameterType 속성으로 매핑할 수 없는 몇몇 사례가 있다.
> 검색 쿼리가 단순 테이블 조회가 아닌 JOIN 구문을 포함할 때는 검색 결과를 정확하게 하나의 자바 객체로 매핑 할 수 없다.
> 또는 검색된 테이블의 칼럼 이름과 매핑에 사용될 자바 객체의 변수 이름이 다를 때에 검색 결과가 정확하게 자바 객체로 매핑되지 않을 때이다.
2. CDATA Section 사용
- sql 구문 내에 '<' 기호를 사용하면 에러가 발생한다. 등호의 의미가 아닌 또 다른 태그로 인식하기 때문이다.
- Mybatis와는 상관없는 XML 고유의 문법으로서, CDATA 영역에 작성된 데이터는 단순한 문자 데이터(Character DATA)이므로 XML 파서가 해석하지 않도록 한다.
1
2
3
4
5
|
<section id="getBoard" resultType="board">
select *
from board
where seq <= #{seq}
</select>
|
cs |
3. sql 대문자 설정하기
- Mapper 파일에 등록되는 sql 구문은 일반적으로 대문자로 작성한다.
- sql 구문은 대소문자를 구분하지는 않지만, 식별성을 높이기 위해 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<!-- board-mapping.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="BoardDAO">
<resultMap id="boardResult" type="board">
<id property="seq" column="SEQ" />
<result property="title" column="TITLE" />
<result property="writer" column="WRITER" />
<result property="content" column="CONTENT" />
<result property="regDate" column="REGDATE" />
<result property="cnt" column="CNT" />
</resultMap>
<insert id="insertBoard" parameterType="board">
<![CDATA[
INSERT INTO BOARD(SEQ, TITLE, WRITER, CONTENT)
VALUES((SELECT NVL(MAX(SEQ), 0)+1 FROM BOARD),#{title},#{writer},#{content})
]]>
</insert>
<update id="updateBoard">
<![CDATA[
UPDATE BOARD SET TITLE=#{title}, content=#{content} WHERE SEQ=#{seq}
]]>
</update>
<delete id="deleteBoard">
<![CDATA[
DELETE BOARD WHERE SEQ=#{seq}
]]>
</delete>
<select id="getBoard" resultType="board">
<![CDATA[
SELECT * FROM BOARD WHERE SEQ=#{seq}
]]>
</select>
<select id="getBoardList" resultMap="boardResult">
<![CDATA[
SELECT * FROM BOARD
WHERE TITLE LIKE '%'||#{searchKeyword}||'%'
ORDER BY SEQ DESC
]]>
</select>
</mapper>
|
cs |
4. SqlSessionFactory 클래스
- Mybatis를 사용하여 DB연동을 간단하게 처리하려면 최종적으로 Mybatis가 제공하는 SqlSession 객체를 사용해야 한다. 지금은 직접 작성했지만 추후에 Mybatis를 스프링과 연동할 때 프레임워크에서 제공하는 클래스를 사용할 것이다.
'DB > MyBatis' 카테고리의 다른 글
[MyBatis] 설정 파일 - SQL Mapper 작성 방법 (0) | 2022.02.23 |
---|---|
[MyBatis] sqlMapper - 실제 쿼리문(CRUD)를 작성할 xml문서의 문법 (1) | 2022.02.10 |
[MyBatis] XML 기초문법 (0) | 2022.02.10 |