gpt4 book ai didi

mysql - Spring Batch中如何做多个查询(具体使用LAST_INSERT_ID())

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:18 25 4
gpt4 key购买 nike

我正在尝试编写一个 Spring Batch Starter 作业,该作业读取 CSV 文件并将记录插入 MySQL 数据库。当它开始时,我想将开始时间保存在一个跟踪表中,当它结束时,将结束时间保存在同一个表中。表结构如下:

TRACKING : id, start_time, end_time

DATA: id, product, version, server, fk_trk_id

我无法找到执行此类操作的示例项目。我相信这需要是一个可以处理多个查询的 Spring Batch Starter 项目。即

//插入开始时间

1. INSERT INTO tracking (start_time) VALUES (NOW(6));

//获取最后插入的外键id

2. SET @last_id_in_tracking = LAST_INSERT_ID();

//从 CSV 中读取数据并将数据插入到 'data' 数据库表中

3. INSERT INTO data (product, version, server, fk_trk_id) VALUES (mysql, 5.1.42, Server1, @last_id_in_tracking);
4. INSERT INTO data (product, version, server, fk_trk_id) VALUES (linux, 7.0, Server2, @last_id_in_tracking);
5. INSERT INTO data (product, version, server, fk_trk_id) VALUES (java, 8.0, Server3, @last_id_in_tracking);

//插入结束时间

6. UPDATE tracking SET end_time = NOW(6) WHERE fk_trk_id = @last_id_in_table1;

我想要有关如何在同一个 Spring Batch Starter 作业中对多个表使用这些查询的示例代码和说明。

编辑部分开始 - 附加问题

我还有一个问题。在我的实体中,我将它们设置为表示与注释的关系(即@ManyToOne、@JoinColumn)...

在您的代码中,我如何从引用的对象中获取 trackingId?让我解释一下:

我的代码(Data.java):

@JsonManagedReference
@ManyToOne
@JoinColumn(name = "id")
private Tracking tracking;

您的代码(Data.java):

@Column(name = "fk_trk_id")
private Long fkTrkId;

您的代码(JobConfig.java):

final Data data = new Data();
data.setFkTrkId(trackingId);

当我的实体中的关系是对象时,如何使用“setFkTrkId”设置 ID?

编辑部分结束 - 附加问题

最佳答案

这是一个示例应用程序,可以执行您的要求。有关详细信息,请参阅自述文件。

https://github.com/joechev/examples/tree/master/csv-reader-db-writer

关于mysql - Spring Batch中如何做多个查询(具体使用LAST_INSERT_ID()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48837044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com