Spring Batch (4) - Writer 만들기
...아.. 그냥 기본을 쓰는게 없네 ㅠㅠ
writer마저 custom을 하면 맨붕이 올거 같다.
이번에 만들 writer는 다음과 같은 요구 사항이 있다.
reader에서 출력되는 결과는 hashmap 구조의 데이터 이고,
다음에 만들어야 할 processor에서 hashmap을 두개 Model이 조합되어 있는 하나의 객체로 변환해 주는 부분이 들어 가겠고,
변환된 데이터는 2개의 테이블에 insert되야하는 사항이다.
뭐 CompositeItemWriter를 쓰면 되겠구나.
생각했는데.. 딱 거기서 이슈가 발생 ㅠㅠ
이슈 : A라는 테이블에 auto-increment 된 값을 B라는 테이블에 insert를 해야 한다.
일단 db dao는 mybatis를 이용하여 구성하였으니..
service를 만들어서 이를 구현할까 =_=;; 고민하다가 딱 좋은 글을 발견 ^^;;
해당 사항은 mybatis에서만 유효하다.
mybatis에 insert 테그 속성에 useGeneratedKeys 가 있는데
keyProperty와 keyColumn를 같이 설정하면 auto_increment인 값을 얻어올수 있다.
예를 들어
위와 같은 경우 parameterType으로 넘긴 객체에 keyProperty로 설정한 멤버 변수에 삽입인 되는 것이다 ㅠㅠ
그럼...조합으로 구성된 객체에서 id값을 다른 insert문에서 사용할수 있으니..이슈는 해결
이제 구현만 하면 끝 ㅋㅋ ^^
참조 : http://mybatis.github.com/spring/batch.html
writer마저 custom을 하면 맨붕이 올거 같다.
이번에 만들 writer는 다음과 같은 요구 사항이 있다.
reader에서 출력되는 결과는 hashmap 구조의 데이터 이고,
다음에 만들어야 할 processor에서 hashmap을 두개 Model이 조합되어 있는 하나의 객체로 변환해 주는 부분이 들어 가겠고,
변환된 데이터는 2개의 테이블에 insert되야하는 사항이다.
뭐 CompositeItemWriter를 쓰면 되겠구나.
생각했는데.. 딱 거기서 이슈가 발생 ㅠㅠ
이슈 : A라는 테이블에 auto-increment 된 값을 B라는 테이블에 insert를 해야 한다.
일단 db dao는 mybatis를 이용하여 구성하였으니..
service를 만들어서 이를 구현할까 =_=;; 고민하다가 딱 좋은 글을 발견 ^^;;
해당 사항은 mybatis에서만 유효하다.
mybatis에 insert 테그 속성에 useGeneratedKeys 가 있는데
keyProperty와 keyColumn를 같이 설정하면 auto_increment인 값을 얻어올수 있다.
예를 들어
<insert id="insertInteractionMetadata" parameterType="com.my.batch.interactions.item.InteractionRecordToWriteInMultipleTables" useGeneratedKeys="true" keyProperty="interaction.interactionMetadata.id" keyColumn="id"> <!-- the insert statement using #{interaction.interactionMetadata.property,jdbcType=...} --> </insert>
위와 같은 경우 parameterType으로 넘긴 객체에 keyProperty로 설정한 멤버 변수에 삽입인 되는 것이다 ㅠㅠ
그럼...조합으로 구성된 객체에서 id값을 다른 insert문에서 사용할수 있으니..이슈는 해결
이제 구현만 하면 끝 ㅋㅋ ^^
참조 : http://mybatis.github.com/spring/batch.html
댓글
댓글 쓰기