Mybatis字符串值插入oracle CLOB

时间:2018-04-28 16:27:17

标签: java oracle performance mybatis

我正在尝试使用mybatis orm将记录列表插入到oracle数据库中。 在插入数据库时​​抛出异常抛出。

  

更新数据库时出错。原因:java.sql.SQLException:ORA-01461:只能绑定LONG值以插入LONG列

我已编写查询以插入数据。

let scores = vec![1, 2, 3];
let score = scores[0];

但是当我像下面那样修改插入代码时,它会插入属性,但是完成这项工作需要大约23秒。

<insert id="insertCusHistoryData" parameterType="com.dpworld.tos.admin.model.CusHistory">   
      INSERT INTO 
         CUS_ACTION_HISTORY_T(SEQ_NO, GLOBAL_ID, REQUEST_ID, CUS_ACTION_CODE, CUS_REQUEST_TIME, ENTITY_TYPE, ENTITY_KEY, PARENT_ENTITY_KEY,
             DELTA_CHANGE, TOTAL_PROCESSING_TIME, TOTAL_SERVER_PROCESSING_TIME, USER_AN, UPDATE_MODE, TOTAL_TIME)
            select  A.*  from(
     <foreach collection="cusHistory" item="history" separator="UNION ALL" >  
        SELECT 
                #{history.sequenceNo} as SEQ_NO,
                #{history.globalId} as GLOBAL_ID,
                #{history.requestId} as REQUEST_ID,
                #{history.cusActionCode} as CUS_ACTION_CODE,
                #{history.cusRequestTime} as CUS_REQUEST_TIME,
                #{history.entityType} as ENTITY_TYPE,
                #{history.entityKey} as ENTITY_KEY,
                #{history.parentEntityKey} as PARENT_ENTITY_KEY,
                #{history.deltaChange, jdbcType=CLOB},
                #{history.totalProcessingTime} as TOTAL_PROCESSING_TIME,
                #{history.totalServerProcessingTime} as TOTAL_SERVER_PROCESSING_TIME,
                #{history.userAn} as USER_AN,
                #{history.updateMode} as UPDATE_MODE,
                #{history.totalTime} as TOTAL_TIME
            FROM DUAL 
    </foreach>)A 

我尝试从第一个和第二个查询中删除CLOB列,第一个查询大约需要8秒,第二个查询需要大约20秒才能完成,在这种情况下会出现巨大的性能问题。

请建议。

0 个答案:

没有答案