2013년 8월 25일 일요일

fieldSetMapper 사용 - 스프링 배치

플랫 파일을 읽고 쓸 때 자신이 만든 클래스에 매핑시켜 읽어 들이면 편하다.
이떄 BeanWrapperFieldSetMapper를 사용하면 편리하다.

<bean id="myDataReader"
  class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
  <property name="resource" value="file:/home/output/data/#{jobParameters['myfolder']}.txt"/>
  <property name="lineMapper">
  <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names" value="number,dataTime,data1,data2,data3"/>
<property name="delimiter">
<util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB"/>
<!-- 탭으로 구분 -->
</property>
</bean>
</property>
<property name="fieldSetMapper">
<bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="targetType"
value="com.my.data.myDao"/>
    <!-- myDao는 파란색글씨와 똑같은 이름의 변수들을 갖고 있고 setter와 getter도 갖고있다-->
    <!-- filedSetMapper를 만들어서 사용해도 관계없다 -->
    <!--bean class="com.my.data.ReportFieldSetMapper" /-->
</bean>
</property>
  </bean>
  </property>
  </bean>
  <bean id="myDataWriter"
  class="org.springframework.batch.item.database.JdbcBatchItemWriter" scope="step">
  <property name="assertUpdates" value="true"/>
  <property name="dataSource" ref="dataSource"/>
  <property name="itemSqlParameterSourceProvider">
<bean class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
</property>
  <property name="sql"
  value="INSERT INTO MY_DATA_TB (MY_ID,DATA_TM,DATA_1,DATA_2,DATA_3)
  VALUES (:number,:dataTime,:data1,:data2,:data3)">
  </property>
  </bean>



참조 :http://blog.naver.com/yesql?Redirect=Log&logNo=70173668117
http://static.springsource.org/spring-batch/reference/html/readersAndWriters.html

댓글 없음:

댓글 쓰기