반응형

Back/Mybatis 4

Mybatis 대용량 insert, update (ExecutorType.BATCH)

대용량 데이터 insert, update 진행 시 ExecutorType.BATCH옵션을 사용하면 업로드 시간을 좀 더 단축 시킬 수 있다. // DI SqlSessionFactory 주입 @Autowired private SqlSessionFactory sqlSessionFactory; ---생략--- public boolean dataUpload(VoTestInfo voTestInfo){ boolean result = true; try { SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); try { sqlSession.insert("xmlNamespace.queryId", voTestInfo); } catch(IOEx..

Back/Mybatis 2020.03.17

대용량 데이터 조회 시 ResultHandler(RowHandler)

Mybatis를 사용하여 대용량데이터를 select해서 List 형태로 호출 하게 되면 몇십만건 혹은 몇백만건 row data를 한번에 호출 하게 되면 OOM(Out of Memory)에러가 발생될 가능성이 매 우 높다. 보통, 엑셀 업로드, 다운로드 혹은 데이터 2차 가공 작업이 필요할때 위의 작업이 필요 한 경우가 발생 되는데, OOM오류를 회피하는 방법으로 Mybatis의 ResultHandler를 통해 데이터 Row별로 반복 작업이 가능하다. 아래의 소스를 통해 설명하자면, // DI SqlSessionFactory 주입 @Autowired private SqlSessionFactory sqlSessionFactory; ---생략--- // 대용량 다운로드 시 ResultHandler를 사용한 O..

Back/Mybatis 2020.02.19

Mybatis foreach에서 collection Map으로 가져오는 방법

파라미터로 넘길 collection 형태 ex) Map의 value에 또 HashMap을 선언한 경우 //Map 선언 private Map fieldData = new HashMap(); 아래의 코드처럼 foreach에서 Map형태를 매핑하려면 entrySet()를 사용. 첫 번째 foreach에서 item의 element를 두 번째 foreach의 collection으로 연결. // map.entrySet() AND INSTR(FD.${key}, ',${element[dtKey]},') > 0 AND FD.${key} = '${element[dtKey]}'

Back/Mybatis 2019.12.04

부적합한 열 유형: 1111(Mybatis)

Error setting null for parameter #10 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111 *원인 #뒤에 붙은 번호의 파라미터값이 null 이기 때문에 이런 오류가 발생. *수정안 Mybatis 쿼리문 내 파라미터에 jdbcType 을 추가해줍니다. NM_TASK = #{nm_task, jdbcType=VARCHAR}

Back/Mybatis 2019.09.17
반응형