@Entity @Table(name = "customer") public class CustomerCredit { public static final String TABLE_NAME = "customer";
@Column(name = "name",nullable = true,length = 12) private String name;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id",nullable = false) private Integer id;
@Column(name = "credit",precision = 15,scale = 2) private BigDecimal credit;
FlatFileItemReader 行使默认的DefaultLineMapper,内里指定了lineTokenizer和fieldSetMapper,就是说要怎么读一行行的数据,读了之后怎么和Bean的字段Mapper,这样后头的步调好继承处理赏罚。
public class CustomerMapper implements FieldSetMapper<CustomerCredit> { @Override public CustomerCredit mapFieldSet(FieldSet fieldSet) throws BindException { CustomerCredit lv = new CustomerCredit(); lv.setId(Integer.parseInt(fieldSet.readString(0))); lv.setName(fieldSet.readString(1)); lv.setCredit(fieldSet.readBigDecimal(2)); return lv; } }
假如是读数据库呢?就是下面谁人JdbcCursorItemReader,内里指定了dataSource,sql,rowMapper,这些都相同文件
public class CustomerCreditRowMapper implements RowMapper { ? ? public static final String ID_COLUMN = "id"; ? ? public static final String NAME_COLUMN = "name"; ? ? public static final String CREDIT_COLUMN = "credit";
? ? public Object mapRow(ResultSet rs,int rowNum) throws SQLException { ? ? ? ? CustomerCredit customerCredit = new CustomerCredit(); ? ? ? ? customerCredit.setId(rs.getInt(ID_COLUMN)); ? ? ? ? customerCredit.setName(rs.getString(NAME_COLUMN)); ? ? ? ? customerCredit.setCredit(rs.getBigDecimal(CREDIT_COLUMN)); ? ? ? ? return customerCredit; ? ? } }
还可以和hibernate团结来读取数据,可以读取存储进程的数据,等等,详细可以参考spring batch文档
说好的自界说处理赏罚数据呢,好比我们把每小我私人的Credit加10.
@Component("customProcessor") public class CustomProcessor implements ItemProcessor<CustomerCredit,CustomerCredit> { @PersistenceContext private EntityManager em; @Override public CustomerCredit process(CustomerCredit item) throws Exception { System.out.println(new Date().toString()+"start to process"); if (item == null) { return null; } try { item = em.find(CustomerCredit.class,item.getId()); item.setCredit(item.getCredit().add(new BigDecimal(10))); //find by id才可以persist (不然呈现detached entity passed to persist) em.persist(item); } catch (Exception e) { e.printStackTrace(); } return item; } }
每一步的处理赏罚,我们想看当作果,可以定制一个ItemReadListener
public class CustomStepListener implements ItemReadListener<CustomerCredit> ? 详细代码省略
修改module-context.xml (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|