Mybatis写入blob数据到MySQL数据库

项目里偶尔需要将二进制数据写入到数据库,典型的例子如用户头像这种小尺寸图片,这种情况Mybatis也是可以处理的。具体方法如下(结合SpringMVC环境):

1、在myapp-servlet.xml里添加处理multipart的bean(必须,否则会提示MultipartResolver没有定义的异常信息):

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
 <property name="defaultEncoding" value="UTF-8"/> 
 <property name="maxUploadSize" value="200000"/> 
</bean>

2、在mapper定义文件(.xml)里,blob类型的字段要显式声明为BLOB类型:

<update id="updateAvatar" parameterType="java.util.Map">
 UPDATE t_user SET
 avatar = #{image,jdbcType=BLOB}
 WHERE
 id = #{id}
</update>

3、与上面的xml文件对应的接口文件里:

void updateAvatar(@Param("id") int id, @Param("image") byte[] image);

4、在Controller里使用MultipartFile类型参数接受上传的文件,如果是多个,使用MultipartFile[]数组:

@RequestMapping(value = "/api/update-avatar", method = RequestMethod.POST)
@ResponseBody
public Object updateAvatar(@RequestParam MultipartFile image) throws IOException {

 //注:为简化demo代码,这里略过service层直接调用mapper
 userMapper.updateAvatar(curUserId, image.getBytes());

 Map<String, Object> model = new HashMap<String, Object>();
 model.put("success", true);

 return model;
}

以上方案经实际测试可行。

欢迎转载
请保留原始链接:https://bjzhanghao.com/p/290

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注