Web

IBatis에서 CLOB 처리 (Select, Insert)

남자두부 2016. 7. 5. 14:07
반응형

IBatis(아이바티스)에서 CLOB을 처리하는 방법

 

// Select 처리방법

 

1

 

resultMap을 코딩한다.

* property와 column에 들어가는 이름은 DB의 칼럼 이름이다.

* resultMap을 사용하여 select 문을 연결하게 되면 DB에 있는 모든 칼럼들을 resultMap에 연결해주어야 한다.

* 소스코드를 보면 두번째에서 CLOB을 사용하였다.

 

1
2
3
4
5
<resultMap id="test" class="java.util.HashMap">
    <result property="TEST1" column="TEST1" jdbcType="VARCHAR2" javaType="java.lang.String"/>
    <result property="TEST2" column="TEST2" jdbcType="CLOB" javaType="java.lang.String"/>
    <result property="TEST3" column="TEST3" jdbcType="NUMBER" javaType="java.lang.String"/>
</resultMap>
cs

 

2

 

select 문에서 위에 있는 resultMap 을 연결해준다.

* Select 문에서 가장 오른쪽에 resultMap을 연결시켜준 모습을 확인할 수 있다.

 

1
2
3
4
5
6
7
8
<select id="testSelcet" parameterClass="java.util.Map" resultClass="java.util.HashMap" resultMap="test">
    SELECT
        TEST1,
        TEST2,
        TEST3
    FROM
        TEST_TABLE
</select>
cs

 

3

 

아래와 같이 sqlMap 사이에 넣어주고 select 구문보다 위에 적용해야 한다.

 

1
2
3
4
<sqlMap namespace="testSqlMap">
    // 이 사이에 resultMap 을 넣어준다.
    // select 구문보다 위에 있어야 한다.
</sqlMap>
cs

 

// Insert 처리 방법

 

1

 

resultMap을 코딩한다. (Select 처리방법에서 1번 참조.)

 

2

 

변수명 마지막에 :java.lang.String 를 연결해서 사용하면 된다.

두번째에서 CLOB을 사용했기 때문에 밑에서 보면 VALUES에 두번째 변수에 :java.lang.String를 연결했다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<insert id="testInsert" parameterClass="java.util.Map">
    INSERT INTO 
        TEST_TABLE
        (    
            TEST1,     
            TEST2,    
            TEST3,
        )
        VALUES
        (    
            #insertTest1#,    
            #insertTest2:java.lang.String#,   
            #insertTest3#              
        )
</insert>
cs

 

// 최종결과물

 

IBatis : ibatis-2.3.0.677

Server : Tomcat v7.0

 

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
<sqlMap namespace="testSqlMap">
 
    <resultMap id="test" class="java.util.HashMap">
        <result property="TEST1" column="TEST1" jdbcType="VARCHAR2" javaType="java.lang.String"/>
        <result property="TEST2" column="TEST2" jdbcType="CLOB" javaType="java.lang.String"/>
        <result property="TEST3" column="TEST3" jdbcType="NUMBER" javaType="java.lang.String"/>
    </resultMap>
 
    <select id="testSelcet" parameterClass="java.util.Map" resultClass="java.util.HashMap" resultMap="test">
        SELECT
            TEST1,
            TEST2,
            TEST3
        FROM
            TEST_TABLE
    </select>
    
    <insert id="testInsert" parameterClass="java.util.Map">
        INSERT INTO 
            TEST_TABLE
            (    
                TEST1,     
                TEST2,    
                TEST3,
            )
            VALUES
            (    
                #insertTest1#,    
                #insertTest2:java.lang.String#,   
                #insertTest3#              
            )
    </insert>
    
</sqlMap>
cs
반응형