第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用批處理作業(yè)的 FlatFileItemReader 和 FlatFileItemWriter

使用批處理作業(yè)的 FlatFileItemReader 和 FlatFileItemWriter

三國紛爭 2022-05-21 20:32:29
我想從文本文件中讀取、解析和寫入數(shù)據(jù)。我實現(xiàn)了這一點,但我對標識符的聲明有疑問。我在下面展示我的課程。CustomerDataMapper.javapublic class CustomerDataMapper implements FieldSetMapper<Customer> {     private static Log log = LogFactory.getLog(CustomerDataMapper.class);     @Override     public RawData mapFieldSet(FieldSet fieldSet) throws BindException {          Customer customer = new Customer();          try {              customer.setCustNum(fieldSet.readInt("id"));              customer.setNameSurname(fieldSet.readString("name"));          }catch (Exception e){              log.error("Mapping error, " + e);          }          return customer;     }}客戶.java@Component@Scope("prototype")public class Customer implements Serializable{    private Integer custNum;    private String nameSurname;    public String getCustNum) {        return custNum;    }    public void setCustNum(String custNum) {        this.custNum = custNum;    }    public String getNameSurname() {        return nameSurname;    }    public void setNameSurname(String nameSurname) {        this.nameSurname = nameSurname;    }}文件管理器.xml<bean id="customerFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">    <property name= "encoding" value ="Cp1254"/>                               <property name="resource" value="#{jobParameters['processPath']}"/>    <property name="lineMapper">    <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">        <property name="lineTokenizer">            <bean class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">                <property name="names" value="id, name"/>                <property name="columns" ref="1-9, 10-30"/>            </bean>        </property>我想問這個,我可以將下面的這個類用于FieldSetMapper。如果我在定義標識符時不使用 Camelcase 表示法,則無法寫入數(shù)據(jù)庫。有沒有關(guān)于這個的任何方法或方法。非常感謝。
查看完整描述

1 回答

?
侃侃無極

TA貢獻2051條經(jīng)驗 獲得超10個贊

我想問這個,F(xiàn)ieldSetMapper這個類可以用嗎


是的,你可以使用這個類。由于您編寫了 custom FieldSetMapper,因此您可以控制映射邏輯。您的映射器將類似于:


public class CustomerDataMapper implements FieldSetMapper<Customer> {

   private static Log log = LogFactory.getLog(CustomerDataMapper.class);


   @Override

   public RawData mapFieldSet(FieldSet fieldSet) throws BindException {

      Customer customer = new Customer();


      try {

          customer.setCust_Num(fieldSet.readInt("id"));

          customer.setName_Surname(fieldSet.readString("name"));

      }catch (Exception e){

          log.error("Mapping error, " + e);

      }

      return customer;

   }

}

但是您的問題不在閱讀方面(和FieldSetMapper),而是在作者方面。使用JdbcBatchItemWriteraItemSqlParameterSourceProvider從您的Customer對象中提取數(shù)據(jù)并將它們設置在 sql 查詢中。默認情況下,BeanPropertyItemSqlParameterSourceProvider使用 a,此實現(xiàn)基于 JavaBeans 命名約定提取數(shù)據(jù)。但是,您可以提供自定義實現(xiàn),在您的情況下將類似于:


class CustomerItemSqlParameterSourceProvider implements ItemSqlParameterSourceProvider<Customer> {


    @Override

    public SqlParameterSource createSqlParameterSource(Customer customer) {

        Map<String, Object> params = new HashMap<>();

        params.put("custNum", customer.getCust_Num());

        params.put("nameSurname", customer.getName_Surname());

        return new MapSqlParameterSource(params);

    }

}

然后你把它設置CustomerItemSqlParameterSourceProvider在你的作家身上。


希望這可以幫助。


查看完整回答
反對 回復 2022-05-21
  • 1 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號