springboot mybatis 存储图片到MySQL代码
时间: 2023-12-13 19:04:02 浏览: 239
springboot mybatis,MYSQL
5星 · 资源好评率100%
下面是一个简单的示例代码,可以将图片存储到MySQL数据库中:
1.首先,需要在MySQL中创建一个表,用于存储图片。可以使用以下SQL语句创建一个名为`image`的表:
```sql
CREATE TABLE `image` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`content` longblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
2.定义一个包含`id`、`name`、`content`三个属性的实体类`Image`,并在类上使用`@TableName`注解指定表名:
```java
@Data
@TableName("image")
public class Image {
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private byte[] content;
}
```
3.编写一个包含`ImageMapper`接口和对应的映射文件`ImageMapper.xml`的Mybatis映射器,用于操作`image`表。在`ImageMapper.xml`中,需要定义一个`insert`语句,将图片信息插入到数据库中:
```xml
<mapper namespace="com.example.mapper.ImageMapper">
<insert id="insertImage" parameterType="com.example.entity.Image">
insert into image(name, content)
values(#{name}, #{content})
</insert>
</mapper>
```
4.在Spring Boot应用程序中,定义一个包含`ImageService`服务和对应的实现类`ImageServiceImpl`的服务类,用于处理图片上传请求。在`ImageServiceImpl`中,使用`MultipartFile`对象获取上传的图片文件,然后将其转换为字节数组,并将其保存到`Image`对象的`content`属性中。最后,调用`ImageMapper`中定义的`insertImage`方法将图片信息插入到数据库中。
```java
@Service
public class ImageServiceImpl implements ImageService {
@Autowired
private ImageMapper imageMapper;
@Override
public void saveImage(MultipartFile file) throws IOException {
byte[] bytes = file.getBytes();
Image image = new Image();
image.setName(file.getOriginalFilename());
image.setContent(bytes);
imageMapper.insert(image);
}
}
```
5.编写一个控制器类`ImageController`,用于处理图片上传请求。在`ImageController`中,使用`@RequestMapping`注解指定上传图片的URL路径,并使用`@RequestParam`注解指定上传的文件参数名。然后,调用`ImageService`中定义的`saveImage`方法将图片信息保存到数据库中。
```java
@RestController
public class ImageController {
@Autowired
private ImageService imageService;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public void upload(@RequestParam("file") MultipartFile file) throws IOException {
imageService.saveImage(file);
}
}
```
这样,当用户上传图片时,图片信息将被保存到MySQL数据库中。如果需要显示图片,可以从数据库中读取图片信息,并将其转换为字节数组,然后使用`ResponseEntity`将字节数组返回给客户端。
阅读全文