将 ID 从查询转换为字符串
Convert ID from query to String
我有这个休息点用于return IDs:
@GetMapping("{id}")
public ResponseEntity<?> get(@PathVariable String id) {
return contractService
.findById(Integer.parseInt(id))
.map(mapper::toNewDTO)
.map(ResponseEntity::ok)
.orElseGet(() -> notFound().build());
}
DTO:
public class ContractNewDTO {
.....
private Integer terminal_id;
....
}
如何使用第二个 SQL 查询将 terminal_id 翻译成终端名称?
我需要这样的东西:
......map(mapper::toNewDTO) -> 到达此处 terminal_id 并进行另一个 SQL 查询以查找与此相关的名称 terminal_id 和 return 终端名称不是 terminal_id.
你能给我一些建议吗?
因此您想根据 terminal_id 检索 terminal_name。
您有几个选择:
1) 如果 terminal_name
与 temrminal_id
在同一个数据库 table 中,那么它应该加载到 ContractNewDTO
中的 mapper::toNewDTO
中,您可以实现使用 terminal_name
而不是 temrminal_id
.
的转换逻辑
2) 如果 termminal_name
在另一个 table 中(例如 terminaldetails table)并且您将需要那个 table 中的所有数据,那么您可以创建一个映射(例如 OneToOne 在 terminal_id
上加入)。 Here 是一篇关于如何做 OneToOne 映射的优秀文章,来自大师本人。
3) 另一种选择是使用@SecondaryTable。假设您当前的实体是 TerminalEntity,它有列 terminal_id
并映射到 table "terminal"。 terminal_name
在另一个 table "terminaldetails".
您可以做的是:
@Entity
@Table(name = "terminal")
@SecondaryTable(name = "terminaldetails")
public class TerminalEntity {
@Id
@GeneratedValue
private Long id;
@Column(name = "terminal_id")
private String terminalId;
@Column(name = "terminal_name", table = "terminaldetails")
private String terminalName;
}
我有这个休息点用于return IDs:
@GetMapping("{id}")
public ResponseEntity<?> get(@PathVariable String id) {
return contractService
.findById(Integer.parseInt(id))
.map(mapper::toNewDTO)
.map(ResponseEntity::ok)
.orElseGet(() -> notFound().build());
}
DTO:
public class ContractNewDTO {
.....
private Integer terminal_id;
....
}
如何使用第二个 SQL 查询将 terminal_id 翻译成终端名称?
我需要这样的东西:
......map(mapper::toNewDTO) -> 到达此处 terminal_id 并进行另一个 SQL 查询以查找与此相关的名称 terminal_id 和 return 终端名称不是 terminal_id.
你能给我一些建议吗?
因此您想根据 terminal_id 检索 terminal_name。 您有几个选择:
1) 如果 terminal_name
与 temrminal_id
在同一个数据库 table 中,那么它应该加载到 ContractNewDTO
中的 mapper::toNewDTO
中,您可以实现使用 terminal_name
而不是 temrminal_id
.
2) 如果 termminal_name
在另一个 table 中(例如 terminaldetails table)并且您将需要那个 table 中的所有数据,那么您可以创建一个映射(例如 OneToOne 在 terminal_id
上加入)。 Here 是一篇关于如何做 OneToOne 映射的优秀文章,来自大师本人。
3) 另一种选择是使用@SecondaryTable。假设您当前的实体是 TerminalEntity,它有列 terminal_id
并映射到 table "terminal"。 terminal_name
在另一个 table "terminaldetails".
您可以做的是:
@Entity
@Table(name = "terminal")
@SecondaryTable(name = "terminaldetails")
public class TerminalEntity {
@Id
@GeneratedValue
private Long id;
@Column(name = "terminal_id")
private String terminalId;
@Column(name = "terminal_name", table = "terminaldetails")
private String terminalName;
}