프로그램

mybatis batch insert - Mysql

mulderu 2013. 4. 25. 16:47

Mysql을 사용하는 경우에만 테스트 한 방법이지만, 여러 DBMS에서 사용가능할듯 합니다.

Mapper에서 ${} 를 이용하는 경우 넘겨준 변수가 그데로 SQL로 변환 되므로, 이러한 특징과

SQL 의 insert inot -table- VALUES 문을 이용하여   values  이하여  여러Row를 (...), (...), ...이러한 형식으로 넘겨 처리 합니다.


Mapper


                insert into ${table} 
                    (${oneName}, ${twoName})
                values 
                    ${batchData}
        


Java


public int addTwoColumns (String table, String oneName, String twoName, List codes) throws Exception {
                Map data = new HashMap();
            data.put("table", table);
            data.put("oneName", oneName);
            data.put("twoName", twoName);
            
            String str = "";
            for(Code c : codes) {
                if(!str.equals("")) str += ",";
                str += "('" +c.getId() + "','" + c.getName() + "')";
            }
            
            data.put("batchData", str);
        
            return codeMapper.addTwoColumns(data);
        }