项目里偶尔需要将二进制数据写入到数据库,典型的例子如用户头像这种小尺寸图片,这种情况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
请保留原始链接:https://bjzhanghao.com/p/290