티스토리 뷰

Web Development/Spring

MyBatis Merge 문

dev ms 2015. 1. 10. 13:35
반응형

merge문은 Mybatis에서는 insert 와 update로 하여 사용하면 된다.

 

아래는 테이블 1개를 이용하여 데이터 값을 넣을 때 사용 했던 부분 이다. 

 

2개는 using에 쿼리를 하나더 준다음에 a , b 이런 식으로 이름을 지어준다.

 

그리고 on 구절 안에 조인 문을 걸어주면 된다.

 

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
<updateid="MergeTestSubmit" parameterType="java.util.HashMap" >
        <![CDATA[
        MERGE INTO t_levelup_test_grade  a
            USING dual
               on (a.system_id=#{winId,jdbcType=VARCHAR} AND 
                      a.course_no=#{courseNo} AND a.test_lang=#{testLang,jdbcType=VARCHAR}  
                       AND a.exam_no=#{examNo}) 
             WHEN MATCHED THEN
             UPDATE SET
                 a.usr_answer=#{usrAnswer ,jdbcType=VARCHAR}
              WHEN NOT MATCHED THEN
                INSERT (      
                              a.cp_code, 
                              a.course_no, 
                              a.system_id, 
                              a.test_lang,
                              a.exam_no,
                              a.total_question,
                              a.correct_answer,
                              a.incorrect_answer,
                              a.usr_answer,
                              a.test_dt,
                              a.reg_id,
                              a.reg_dt,
                              a.usr_answer_ox
                        ) 
                values (
                               #{cpCode , jdbcType=VARCHAR},
                               #{courseNo},
                               #{winId , jdbcType=VARCHAR},
                               #{testLang , jdbcType=VARCHAR},
                               #{examNo},
                               '0',
                               '0',
                               '0',
                               #{usrAnswer , jdbcType=VARCHAR},
                               '2013-02-28',
                               'test',
                               sysdate,
                               ''
                        )

          ]]>

    </update>

   

반응형