mybatis插入图片处理--mysql

  1. 1. 数据库Scheme
1.数据库Scheme
  1. DROP TABLE IF EXISTS `user_graphic_t`;  
  2. /*!40101 SET @saved_cs_client     = @@character_set_client */;  
  3. /*!40101 SET character_set_client = utf8 */;  
  4. CREATE TABLE `user_graphic_t` (  
  5.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  6.   `graphic_data` blob,  
  7.   PRIMARY KEY (`id`)  
  8. ) ENGINE=InnoDB AUTO_INCREMENT=360 DEFAULT CHARSET=utf8; 
2.Mapper配置文件
  1. <resultMap id="userGraphicMap" type="userGraphicVo">  
  2.         <id column="id" property="id" jdbcType="DECIMAL" />  
  3.         <span style="color: #ff0000;"><result column="graphic_data" property="graphicData" jdbcType="BLOB" /></span>  
  4.   
  5.   
  6.   
  7. </resultMap>  
  8.   
  9. <sql id="resultColumn">  
  10.         id,graphic_data  
  11. </sql>  
  12.       
  13. <insert id="insertUserGraphic" parameterType="userGraphicVo">  
  14.         INSERT INTO user_graphic_t (  
  15.         <include refid="resultColumn" />  
  16.         )  
  17.         values (  
  18.         #{id},,#{graphicData}  
  19.         )  
  20. </insert>  
  21.       
  22. <select id="selectUserGraphic" parameterType="java.lang.Long" resultMap="userGraphicMap">  
  23.         SELECT  
  24.         <include refid="resultColumn" />  
  25.         from user_graphic_t WHERE  
  26.         id=#{id}   
  27.         order by id desc  
  28. </select>  
3.Java bean
  1. public class UserGraphicVo {  
  2.   
  3.     private Long id;  
  4.       
  5.     private byte[] graphicData;  
  6.   
  7.        //get/set方法  
  8. }  
4.Action 处理
  1. public void showReportImage() {  
  2.                 response.setContentType("image/jpeg");  
  3.   
  4.                 if (!"".equals(id)) {  
  5.             List<UserGraphicVo> list = userGraphicService.findUserGraphicVoById(id);  
  6.             if(null != list && !list.isEmpty()){  
  7.                 OutputStream os = null;  
  8.                 try {  
  9.                     os = response.getOutputStream();  
  10.                     os.write(list.get(0).getGraphicData());  
  11.                     os.flush();  
  12.                 } catch (IOException e) {  
  13.                     Log.info("读取文件出错!" + e.getMessage());  
  14.                 } finally {  
  15.                     if(null != os){  
  16.                         try {  
  17.                             os.close();  
  18.                         } catch (IOException e) {  
  19.                             Log.info("关闭文件输出流出错!" + e.getMessage());  
  20.                         }  
  21.                     }  
  22.                 }                 
  23.             }  
  24.         }  
  25.     }  


下面是一个简单的示例代码,可以将图片存储到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`将字节数组返回给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值