2014-10-17 5 views
1

특정 데이터베이스에서 데이터를 추출하여 XML 파일에 저장해야합니다.스프링 배치에서 다른 데이터베이스 테이블의 데이터를 추출하십시오.

그러나 데이터는 다른 테이블에 대해 여러 선택 쿼리를 수행해야만 얻을 수 있습니다. 여기

내 구성입니다 :

<!-- Reader for getting msisdn --> 
<bean id="pagingdbItemReader2" 
    class="org.springframework.batch.item.database.JdbcPagingItemReader" 
    scope="step"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="queryProvider"> 
     <bean 
      class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean"> 
      <property name="dataSource" ref="dataSource" /> 
      <property name="selectClause" value="SELECT SUBSTR(DN_NUM,4) AS MSISDN" /> 
      <property name="fromClause" 
       value="FROM contr_services_cap cs, directory_number d" /> 
      <property name="whereClause" 
       value="WHERE co_id in (select co_id from contract_all where customer_id =:CUSTOMER_ID) 
         AND cs.dn_id = d.dn_id 
         AND cs.sncode = 1 
         AND CS.MAIN_DIRNUM = 'X'" /> 
      <property name="sortKey" value="MSISDN" /> 
     </bean> 
    </property> 
    <property name="parameterValues"> 
     <map> 
      <entry key="CUSTOMER_ID" value="#{jobParameters['CUSTOMER_ID']}" /> 
     </map> 
    </property> 
    <property name="pageSize" value="10" /> 
    <property name="rowMapper"> 
     <bean class="com.ooredoo.model.inputDB.MSISDNRowMapper" /> 
    </property> 
</bean> 

<!-- Writer for getting msisdn --> 
<bean id="dbItemWriter2" class="org.springframework.batch.item.xml.StaxEventItemWriter"> 
    <property name="resource" value="file:xml/outputs/DonneesFactureFromDB.xml" /> 
    <property name="marshaller" ref="dbMarshaller2" /> 
    <property name="rootTagName" value="Facture" /> 
</bean> 

<!-- Marshaller for getting msisdn --> 
<bean id="dbMarshaller2" class="org.springframework.oxm.xstream.XStreamMarshaller"> 
    <property name="aliases"> 
     <util:map id="aliases"> 
      <entry key="msisdn" value="com.ooredoo.model.inputDB.MSISDN" /> 
     </util:map> 
    </property> 
</bean> 

나는이 모든 설정을 (그리고 자바 클래스를 해당 생성) 모든 검색어에 대해할까요?


편집 :

나는 쿼리 "A"를 사용하여 데이터베이스에서 데이터를 추출하기 위해이 설정을 완료했습니다 (그리고 그것은 일했다). 그래서 내 질문은 : 내가 원하는 모든 쿼리에 대해 동일한 구성 (독자, 작가, 마샬 러 등 ...)을 써야겠습니까 ... 아니면 내가 어쩌면 일종의 "쿼리 그룹을 작성할 수 있습니다 "그것은 하나씩 실행되어 결과가 하나의 XML 파일로 작성되도록합니다. ???

+0

나만의 맞춤 작성기를 쓸까요? – Siho

+0

아무도 내 문제에 대한 아이디어가 없습니다. (? – Siho

+0

죄송합니다. 질문이 너무 광범위합니다. 분명히 XStream을 사용하고있는 것처럼 JAXB와 아무런 관련이 없습니다. – lexicore

답변

0

각 쿼리가있는 여러 독자를 만든 다음 합성 패턴을 사용하여 함께 연결해야한다고 생각합니다.

HTH

+0

답을 뒷받침하는 샘플 코드 또는 링크를 제공해 주시겠습니까? –