30만정도 되는 데이터를 insert 해야하는데 for문을 이용한 단순 반복문으로 실행하니 insert가 안된다.
그래서 Mapper xml 에서 테그를 이용하여 대량의 데이터를 insert 하는 방법을 적어둔다.
java code
1 2 3 4 5 6 7 8 9 10
| SqlSession sqlSession = null; List<table> tableList; try { sqlSession = getSqlSessionFactory().openSession(false); Mapper table = sqlSession.getMapper(Mapper.class); Mapper.insert(tableList); } finally { sqlSession.commit(); }
|
위와 같이 List를 Mapper로 전달해주고 xml에서 활용하며된다.
Mapper XML
1 2 3 4 5 6 7 8 9 10 11 12
| <insert id="insert" parameterType=“com.example.table"> insert into test (id, name, age) VALUES <foreach item="table" index="index" collection="list" separator=","> ( #{table.emsid}, #{table.id}, #{table.name}, #{table.age} ) </foreach> </insert>
|
foreach 태그에서 collection 컬럼은 넘겨진 파라미터가 List 형태이므로 list라고 적어주면 된다.