2014-09-15 2 views
0

Я пытаюсь выполнить пакетное обновление в myBatis с помощью базы данных oracle, где мне нужно обновить записи 10K +. Но когда я использую нижеОбновление пакета MyBatis для oracle

Я получаю исключение, говорит «недопустимый символ». Он работает нормально, когда я делаю одно заявление об обновлении несколько раз. Пожалуйста, помогите с вашим примером, если вы уже пробовали это.

<update id="batchUpdate"> 
       <foreach collection="empList" item="employee" separator=";"> 
        UPDATE Employee 
        SET EMP_JOBTITLE = #{employee.jobTitle}, 
         EMP_STATUS = #{employee.status} 
         WHERE Employee_ID = #{employee.empId} 
        </foreach> 
    </update> 
+0

Возможный дубликат [MyBatis Batch (удалить «сотрудника.») Вставка/обновление для Oracle] (http://stackoverflow.com/questions/23486547/mybatis-batch-insert-update-for-oracle) –

ответ

0

Если вы используете Oracle:

<update id="batchUpdate"> 
call 
begin 
<foreach collection="empList" item="employee" close=";" eparator=";"> 
        UPDATE Employee 
        SET EMP_JOBTITLE = #{employee.jobTitle}, 
         EMP_STATUS = #{employee.status} 
         WHERE Employee_ID = #{employee.empId} 
</foreach> 
end 
</update> 
+0

Это дает мне ORA-06576: неправильное имя функции или процедуры – rimsky

-1

я не смог решить эту ошибку, но наткнулся на эту post, в котором код вкладчиком рекомендовал правильный способ периодического обновления состоит в том, чтобы открыть сеанс в пакетном режиме и многократно вызывать обновление для одной записи.

Вот что работает для меня:

public void updateRecords(final List<GisObject> objectsToUpdate) { 
    final SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession(ExecutorType.BATCH); 
    try { 
     final GisObjectMapper mapper = sqlSession.getMapper(GisObjectMapper.class); 
     for (final GisObject gisObject : objectsToUpdate) { 
      mapper.updateRecord(gisObject); 
     } 
     sqlSession.commit(); 
    } finally { 
     sqlSession.close(); 
    } 
} 

Затем удалите Еогеасп в своем обновлении и изменить его, чтобы обновить одну запись

Смежные вопросы