mysql数据库表设计——如何对图片进行存储

业务场景:当我们进行头条文章接口的设计时,需要存储封面图片的字段。

文章和图片关系 ----> 一对多

方案一:传统的表设计
设计一张表,专门保存文章和封面图片之间的关系

idarticle_id(文章id,FK外键)cover_url (封面url地址)
12url1
22url2
34url3
45url4

提出问题

文章的封面一般是不会去修改的,但是在文章首页都需要展示,此时又涉及到关联查询,所有速度是比较慢的。

方案二: 使用mysql-5.7版本新型字段

优化方案: 使用mysql-5.7版本新型字段:json字段
在文章article表中,新增一个cover文章封面字段,数据格式为json

设计表的时候,定义字段语法
sql语法: cover json NOT NULL COMMENT '封面'
flask语法:cover = db.Column(db.JSON, doc='封面')

Json数据格式

cover = "{'type': 0, 'pics': [] }"
cover = "{'type': 3, 'pics': [url1, url2, url3]}"
cover = "{'type': 1, 'pics': [url1]}"
cover = "{'type': 9, 'pics': [url1....]}"

最终的文章表加上cover字段

idtittlecover
1我是标题“{‘type’: 3, ‘pics’: [url1, url2, url3]}”

mysql新增字段json本质:
json字段只是一层封装,底层还是使用LONGTEXT长文本实现的 但是mysql给json类型提供了一些函数方便使用

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,将图片存储MySQL数据库中需要将图片转换为二进制流格式,并将其存储在BLOB类型的字段中。以下是一个示例代码片段,演示如何将图片存储MySQL数据库中: ```java // 读取图片 File file = new File("path/to/image.jpg"); FileInputStream input = new FileInputStream(file); byte[] imageBytes = new byte[(int)file.length()]; input.read(imageBytes); input.close(); // 建立数据库连接 Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 存储图片 PreparedStatement statement = connection.prepareStatement("INSERT INTO images (name, image) VALUES (?, ?)"); statement.setString(1, file.getName()); statement.setBytes(2, imageBytes); statement.executeUpdate(); statement.close(); connection.close(); ``` 接下来,演示如何从MySQL数据库中取出图片。 ```java // 建立数据库连接 Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 从数据库中取出图片 PreparedStatement statement = connection.prepareStatement("SELECT image FROM images WHERE name = ?"); statement.setString(1, "image.jpg"); ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { byte[] imageBytes = resultSet.getBytes(1); // 将二进制流写入文件 FileOutputStream output = new FileOutputStream("path/to/output.jpg"); output.write(imageBytes); output.close(); } resultSet.close(); statement.close(); connection.close(); ``` 以上代码片段演示了如何从数据库中取出图片,并将其写入文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值