Back/Mybatis

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

밍꿔 2020. 3. 17. 16:10


반응형

 

대용량 데이터 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(IOException e){
                        result = false;
                        sqlSession.rollback();
                        e.printStackTrace();
		} finally {
			sqlSession.close();
		}
	} catch (Exception e) {
		e.printStackTrace();
		sqlSession.rollback();
                result = false;
	}  finally {
		sqlSession.flushStatements();
		sqlSession.close();
	}
	return result;
}

 

16번라인의 sqlSession.insert("xmlNamespace.queryId", voTestInfo); 에서

 

첫번째 인자값은 실행될 쿼리가 있는 xml의 namespace명 + 쿼리ID

두번째 인자값은 파라미터

 

추가로 Mybatis ForEach를 사용한다면 더 단축이 가능하다.

반응형