当前位置: 首页 > 知识库问答 >
问题:

定制spring批处理项目Flat Writer

商飞尘
2023-03-14

我有一个工作的Spring批处理程序,可以创建一个平面文件,但我希望能够将标签放入我的字段。

这是我的Pojo学生的例子

public class Student{

private String studentName;
private double gpa;


public String getStudentName() {
    return studentName;
}

public void setStudentName(String studentName) {
    this.studentName = studentName;
}

public double getGpa() {
    return dob;
}

public void setGpa(double gpa) {
    this.gpa= gpa;
}

这是我的划船地图

public class StudentRowMapper implements RowMapper<Student>{

@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {

    Student student= new Student();
    student.setStudentName(rs.getString("student_name"));
    student.setGpa(rs.getDouble("gpa"));

    return student;
} 

}

以下是我的XML文件摘录:

    <property name="lineAggregator">

        <!-- An Aggregator which converts an object into delimited list of strings -->
        <bean
            class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">

            <property name="delimiter" value="|" />

            <property name="fieldExtractor">


                <bean
                    class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                    <property name="names" value="studentName, gpa" />
                </bean>
            </property>
        </bean>
    </property>
</bean>

它产生以下输出

Rita Paul|3.8|
Han Yanagata|3.0|

我希望能够给每个字段加上库斯特姆前缀,我希望能够编写一个平面文件,上面写着

name=Rita Paul|gpa=3.8|
name=Han Yanagata|gpa=3.0|

共有1个答案

周马鲁
2023-03-14

在您的行映射器中,您可以通过

public class StudentRowMapper implements RowMapper<Student>{

@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {

    Student student= new Student();
    student.setStudentName("name="+rs.getString("student_name"));
    student.setGpa("gpa="+rs.getDouble("gpa"));

    return student;
} 
 类似资料:
  • 我正在使用JpaPagingItemReaderBuilder查询一个DB,结果被插入到另一个DB中。 查询返回的结果没有任何问题,但我得到了一个错误与读取器的返回,在处理器中,您可以检查我的编码和错误下面。 有谁能给我一点启示吗?为什么我不能处理结果?

  • 我们使用Spring Batch进行一些处理,通过Reader读取一些ID,我们希望通过处理器将它们处理为“块”,然后写入多个文件。但是处理器接口一次只允许处理一个项目,我们需要进行批量处理,因为处理器依赖于第三方,不能为每个项目调用服务。 我看到我们可以为“块”中涉及的所有读取器-处理器-写入器创建包装器,以处理列表<>并委托给一些具体的读取器/处理器/写入器。但这对我来说并不是件好事。像这样:

  • 我正在建立一个多模块的项目与Spring引导和批处理。 当前的目录结构为: 核心 网站 批处理 核心包含领域对象、存储库、服务。 web和批处理各自有自己的上下文,并用注释,我在执行时使用属性进行配置,例如 问题出现在包含核心类时,由于缺少存储库的bean定义,两个应用程序都不会启动,所以听起来组件扫描对核心模块不起作用。 我已经尝试了和),但没有成功。 有什么想法,我错过了什么,或者有没有更好的

  • 我是一个初学者,刚刚开始学习Spring Batch。我在这里按照这个教程创建了一个helloworld示例。当我按照教程操作时,我在尝试将导入java类时遇到了一个问题。因此我在网上搜索,发现我需要在build.gradle.中添加一些东西。问题是,即使我在build.gradle中添加了依赖项,我仍然有导入的错误消息。我正在使用EclipseJavaEE IDE 4.5.0(Mars)来完成这

  • 我正在尝试实现一个Spring批处理作业,为了处理记录,它需要2-3个db调用,这会减慢记录的处理速度(大小为100万)。如果我使用基于块的处理,它会单独处理每条记录,性能会很慢。因此,我需要一次性处理1000条记录,作为批量处理,这将减少数据库调用,并提高性能。但我的问题是,如果我实现Tasklet,那么我也会失去可重启性和重试/跳过功能,如果使用AggregateInputReader实现,我

  • 我正在编写一个spring批处理作业,在其中一个步骤中,我为处理器编写了以下代码: null 欢迎任何暗示。