Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
Tags
- spring boot
- tomcat
- Spring
- Data REST
- ORM
- JUnit
- spring-mvc
- ApplicationPidFileWriter
- Spring Batch
- spring-webmvc
- spring boot tomcat
- IntelliJ
- 세미나
- SuperTypeToken
- spring-webmvc #코드읽기
- docker
- spring batch 코드
- Spring Data REST
- JPA mapping
- Spring Data JPA
- JPA
- 코드 리뷰
- static inner class
- spring camp
- REST API
- spring jpa
- spring pid
- batch
- 톰캣
- spring bean
- Today
- 1
- Total
- 916,386
woniper
[mybatis] foreach를 이용한 다중 insert 본문
mybatis에서 다중 insert를 해야 될 일이 생겼다. List 형태의 객체를 이용해서 insert를 해야 하는데 두가지 방법이 있다.
한가지는 단일 insert mapper를 구현하고 insert mapper를 List를 이용해 반복해서 insert한다.
또 다른 방법이 이제 부터 설명할 foreach를 이용한 다중 insert이다.
두가지 모두 예제를 통해서 설명해 보겠다.
1. UserDto 클래스
public class UserDto { private long seq; private String username; private int age; public long getSeq() { return seq; } public void setSeq(long seq) { this.seq = seq; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
UserDto 클래스를 아래와 같은 List로 만들고 Map 객체에 담았다고 가정하자.
UserDto dto1 = new UserDto(); dto1.setUsername("홍길동"); dto1.setAge(25); UserDto dto2 = new UserDto(); dto2.setUsername("woniper"); dto2.setAge(26); List<userdto> list = new ArrayList<userdto>(); list.add(dto1); list.add(dto2); Map<String, Object> map = HashMap<String, Object>(); map.put("list", list);
2. List형태의 객체를 반복해서 단일 insert 처리
public class UserMapper { @Autowired private SqlSession mapper; public void insetUser(Mapmap) { List list = (ArrayList )map.get("list"); for(UserDto dto : list) { mapper.insert("user.insert", dto); } } }
insert into user(username, age) values(#{username}, #{age})
3. <foreach> 태그를 이용한 다중 insert
public class UserMapper { @Autowired private SqlSession mapper; public void insetUser(Map<string, object> map) { mapper.insert("user.insert", map); } }
insert into user(username, age) values (#{item.username}, #{item.age})
- <foreach> 태그 속성 설명
collection : parameterType으로 넘어온 map안에 list(map에 key값)
item : collection을 사용할 변수 명
seperator : 반복 문자열을 구분할 문자
'Framework' 카테고리의 다른 글
[JPA] JavaEE 환경(Spring)에서 JPA 설정 및 CRUD (0) | 2015.05.02 |
---|---|
[JPA] JavaSE 환경에서 JPA 설정 및 CRUD (2) | 2015.05.02 |
[JPA] JPA란 무엇인가? (11) | 2015.05.01 |
[MyBatis] Invalid bound statement (not found): 에러 (9) | 2015.04.01 |
[mybatis] insert 후 key값 반환 (0) | 2014.05.07 |
1 Comments