【MyBatisPlus 实现文件的上传和下载 超详细....】

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【MyBatisPlus 实现文件的上传和下载 超详细....】

数据库设置

CREATE DATABASE IMAGETEST;
USE IMAGETEST;
CREATE TABLE `photo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `images` varchar(100) COLLATE utf8_czech_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci |
  1. 依赖

注意: 数据库驱动版本要找自己对应的数据库驱动、我的是5.6

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--    修改成我们所需要的mysql版本     -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <!--   lombok     -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  1. 配置SpringBoot数据库连接文件
spring:
  datasource:
    # 我们这里用户名和密码都不需要双引号 ,
    username: root
    password: xxxx
    url: jdbc:mysql://localhost:3306/imagetest?userUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.jdbc.Driver
  1. 实体类的配置如下
package com.jsxs.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.sql.Blob;
/**
 * @Author Jsxs
 * @Date 2023/4/2 20:54
 * @PackageName:com.jsxs.pojo
 * @ClassName: demo
 * @Description: TODO
 * @Version 1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class photo implements Serializable {
    @TableId(type = IdType.AUTO)
    private int id;
    private String images;
}
  1. Mapper层需要继承一个MybatisPlus接口
package com.jsxs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jsxs.pojo.photo;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
/**
 * @Author Jsxs
 * @Date 2023/4/3 14:45
 * @PackageName:com.jsxs.mapper
 * @ClassName: userMapper
 * @Description: TODO
 * @Version 1.0
 */
@Mapper
@Repository
public interface userMapper extends BaseMapper<photo> {
}
  1. 文件上传
@Resource
    private userMapper mapper;  //mybatisplus 自带类
    // 文件上传
    @Test
    void testUpload() throws IOException {
        //  被上传的文件 - 真实开发中我们通过html获取被上传的路径
        String path="E:/加速器/2.jpg";
        // 读取被上传的文件
        FileInputStream fileInputStream = new FileInputStream(path);
        String  path2="E:/Ideal源码/Test-image/src/main/java/com/jsxs/upload"; // 读入到的文件位置
        String replace = UUID.randomUUID().toString().replace("-", ""); // UUID防止名字重复
        String realPath=path2 + "/" + replace + ".jpg"; // 真实被放去的位置
        FileOutputStream fileOutputStream = new FileOutputStream(realPath);
        // 数据库进行插入的操作
        photo p = new photo();
        p.setImages(realPath);
        mapper.insert(p);
        byte[] bytes = new byte[1024];  //缓冲区
        int count=0;
        while ((count=fileInputStream.read(bytes))!=-1){
            fileOutputStream.write(bytes,0,count);  // 上传到我们的 upload路径
        }
        fileInputStream.close();  // 关闭文件
        fileOutputStream.close();
    }

  1. 文件下载
@Resource
    private userMapper mapper;  //mybatisplus 自带类
    //文件下载
    @Test
    void contextLoads() throws Exception {
        photo p = mapper.selectById(2);  // 查找数据库-通过ID
        //  读去文件
        FileInputStream fileInputStream = new FileInputStream(p.getImages()); //  读取我们查到的路径
        FileOutputStream fileOutputStream = new FileOutputStream("E:/加速器/4.jpg");  // 设置我们下载的路径
        byte[] bytes = new byte[20];  // 设置缓存区
        int count=0;
        while ((count=fileInputStream.read(bytes))!=-1){
            fileOutputStream.write(bytes,0,count);  // 文件下载到哪里?
        }
        fileInputStream.close();  // 关闭资源
        fileOutputStream.close();
    }


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
XML Oracle Java
mybatis反向生成实体类、dao层以及映射文件
mybatis反向生成实体类、dao层以及映射文件
|
5月前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
360 0
|
5月前
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
59 0
|
5月前
|
SQL Java 数据库连接
MyBatis映射文件深入
MyBatis映射文件深入
83 0
|
11月前
|
SQL 安全 Java
MyBatis映射文件深入--动态sql
MyBatis映射文件深入--动态sql
95 0
|
5月前
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
660 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
XML Java 数据库连接
解决在mybatis中使用class属性绑定映射文件出现的异常问题~
解决在mybatis中使用class属性绑定映射文件出现的异常问题~
|
5月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
279 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
1月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
39 1
|
3月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
74 3