gpt4 book ai didi

java - 从图像 URL 将图像保存到 MySql (Spring JPA Hibernate)

转载 作者:行者123 更新时间:2023-11-29 16:46:15 24 4
gpt4 key购买 nike

我正在工作 Spring JPA Hibernate 项目,想要将图像从 Image Url 保存到 Mysql 数据库。我正在传递订单 DTO 数据以及从 Rest 服务获取的图像 URL。如何将图像 url 作为图像保存到数据库。我认为我们必须首先从 Url 获取图像。请解决这个问题。

订单DO.java

@Table(name = "ORDER")
public class OrderDO implements Serializable{

@Column(name = "ORDER_NUMBER", nullable = false)
private String orderNumber;

@OneToMany(cascade = CascadeType.ALL, mappedBy="order")
private Set<OrderItemDO> items = new HashSet<>();
}

OrderItemDO.java

@Table(name = "ORDER_ITEM")
public class OrderItemDO implements Serializable{

@Column(name = "PRODUCT_NAME",nullable = false)
private String name;

@Lob
@Column(name = "IMAGE")
private byte[] image;

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="ORDER_ID", referencedColumnName="ID")
private OrderDO order;
}

OrderRepository.java

@Repository
public interface OrderRepository extends CrudRepository<OrderDO, Long>{

public Page<OrderDO> findAll(Pageable pageable);

}

OrderServiceImpl.java

public class OrderServiceImpl {

@Autowired
private ModelMapper modelMapper;

@Autowired
private OrderRepository orderRepository;

private OrderDO map(Order dto) {
OrderDO orderDO = modelMapper.map(dto, OrderDO.class);

Set<OrderItemDO> itemsDO = new HashSet<>();
for(OrderItem item : dto.getItems()) {
OrderItemDO itemDO = map(item);
itemDO.setOrder(orderDO);
itemsDO.add(itemDO);
}
orderDO.setItems(itemsDO);
return orderDO;
}

public OrderItemDO map(OrderItem dto) {
OrderItemDO itemDO = modelMapper.map(dto, OrderItemDO.class);
return itemDO;
}

public Order SaveOrder(Order dto) {
OrderDO entity = this.map(dto);
entity = orderRepository.save(entity);
return this.map(entity);
}

最佳答案

您可以在Rest Service中将图像url转换为数据byte[]图像,然后再保存。

public static byte[] convertImageByte(URL url) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream is = null;
try {
is = url.openStream ();
byte[] byteChunk = new byte[4096]; // Or whatever size you want to read in at a time.
int n;

while ( (n = is.read(byteChunk)) > 0 ) {
baos.write(byteChunk, 0, n);
}
return byteChunk;
}
catch (IOException e) {
System.err.printf ("Failed while reading bytes from %s: %s", url.toExternalForm(), e.getMessage());
e.printStackTrace ();
// Perform any other exception handling that's appropriate.
}
finally {
if (is != null) { is.close(); }
}
return null;
}

关于java - 从图像 URL 将图像保存到 MySql (Spring JPA Hibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53097013/

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