mybatis 将二进制文件写入数据库保存,和文件下载

上传
public AjaxResult up(MultipartFile file) throws Exception {
    if (null == file) {
        return AjaxResult.error("文件为空");
    }
    byte[] imgbytes = file.getBytes();
 
    String filename = file.getOriginalFilename();
  
    logger.info("===filename===" + filename);
    Attachment attachment = new Attachment();
    attachment.setData(imgbytes);
    attachment.setFilename(filename);
    yqSelfService.addAttachment(attachment);
    return AjaxResult.success("成功", attachment.getId());

}

 

 <insert id="addAttachment" useGeneratedKeys="true" keyProperty="id" parameterType="Attachment">
insert into  attachment (filename,`data`) values (#{filename},#{data,typeHandler=org.apache.ibatis.type.BlobTypeHandler})
 </insert>

文件下载

 @GetMapping(value = "/down/file")
    public AjaxResult importData(Long id, HttpServletResponse response) throws Exception {
        byte[] imgbytes = yqSelfService.findAttachment(id);
        if (null != imgbytes) {
            OutputStream out = response.getOutputStream();
            out.write(imgbytes);
        }
        return null;
    }
   public byte[] findAttachment(Long id) {
        try {
            Map<String, Object> map = yqSelfMapper.findAttachment(id);
            return (byte[]) map.get("data");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    <resultMap type="java.util.Map" id="imgResultMap" >
        <result  property="data" column="data" jdbcType="BLOB"  typeHandler="org.apache.ibatis.type.BlobTypeHandler"/>
    </resultMap>

    <select id="findAttachment" parameterType="map" resultMap="imgResultMap">
        SELECT   a.`data`   FROM attachment  a WHERE a.id= #{id}
    </select>

前端展示

<img src="https://xxxx.com/v1.0/down/file?id=3">

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤将PDF文件保存到MySQL数据库中: 1. 在MySQL数据库中创建一个表,其中包含一个BLOB类型的列,用于存储PDF文件二进制数据。 2. 在Java中使用MyBatis访问数据库,并创建一个包含PDF文件二进制数据的字节数组。 3. 将字节数组插入到MySQL表中的BLOB列中。可以使用MyBatis的insert语句来执行此操作。 以下是示例代码: ``` // 读取PDF文件并将其转换为字节数组 File file = new File("path/to/pdf/file.pdf"); byte[] pdfData = Files.readAllBytes(file.toPath()); // 创建MyBatis的SqlSessionFactory SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); // 获取数据库会话 try (SqlSession session = sessionFactory.openSession()) { // 创建一个Mapper对象 PdfMapper mapper = session.getMapper(PdfMapper.class); // 创建一个Pdf对象,并将字节数组设置为PDF数据 Pdf pdf = new Pdf(); pdf.setData(pdfData); // 将Pdf对象插入到数据库中 mapper.insertPdf(pdf); // 提交事务 session.commit(); } ``` 其中,PdfMapper类定义了一个名为insertPdf的方法,用于将Pdf对象插入到数据库中。该方法可以在MyBatis的Mapper XML文件中实现。例如: ``` <insert id="insertPdf" parameterType="com.example.Pdf"> INSERT INTO pdfs (data) VALUES (#{data, jdbcType=BLOB}) </insert> ``` 请注意,这只是一个示例代码,你需要根据自己的实际情况进行调整。另外,为了确保安全性,建议在将PDF文件存储到数据库之前对其进行验证和过滤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值