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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【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();
    }


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
XML Oracle Java
mybatis反向生成实体类、dao层以及映射文件
mybatis反向生成实体类、dao层以及映射文件
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
625 0
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
192 0
|
SQL Java 数据库连接
MyBatis映射文件深入
MyBatis映射文件深入
137 0
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
1519 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
7月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
7月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
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)
404 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
XML Java 数据库连接
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
264 0
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
194 1