Mybatis的mapper.xml文件不放在resource里,pom文件配置

有些人习惯把mapper.xml文件放在java文件夹下面,和mapper的interface放到一起,不放倒resource里,方便查看。
在这里插入图片描述
这样的话需要在pom文件添加:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

因为默认的打包方法不会把java文件夹下的xml文件打进来,会造成mybatis找不到xml文件,所以需要添加一下build配置

好的,以下是一个基于Spring Boot和MyBatis文件上传功能的示例程序,包括Controller层、Service层、Mapper层以及Mapper.xml文件: 1. 首先,在pom.xml文件中添加如下依赖: ```xml <dependencies> <!-- Spring Boot相关依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- MyBatis相关依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies> ``` 2. 配置数据库连接,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf-8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 3. 创建文件上传实体类FileInfo.java: ```java public class FileInfo { private Long id; private String name; private String url; private Long size; // getter/setter方法 } ``` 4. 创建Mapper接口FileMapper.java: ```java @Mapper public interface FileMapper { void save(FileInfo fileInfo); } ``` 5. 创建Mapper.xml文件FileMapper.xml: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.example.mapper.FileMapper"> <insert id="save" parameterType="com.example.entity.FileInfo"> insert into file_info(name, url, size) values(#{name}, #{url}, #{size}) </insert> </mapper> ``` 6. 创建Service接口FileService.java: ```java public interface FileService { void save(FileInfo fileInfo); } ``` 7. 创建Service实现类FileServiceImpl.java: ```java @Service public class FileServiceImpl implements FileService { @Autowired private FileMapper fileMapper; @Override public void save(FileInfo fileInfo) { fileMapper.save(fileInfo); } } ``` 8. 创建Controller类FileController.java: ```java @RestController @RequestMapping("/file") public class FileController { @Autowired private FileService fileService; @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { try { // 保存文件信息 FileInfo fileInfo = new FileInfo(); fileInfo.setName(file.getOriginalFilename()); fileInfo.setUrl("http://localhost:8080/file/" + fileInfo.getName()); // 假设文件访问URL为http://localhost:8080/file/文件名 fileInfo.setSize(file.getSize()); fileService.save(fileInfo); // 保存文件到磁盘 String filename = file.getOriginalFilename(); String filepath = "D:/uploads/" + filename; // 假设文件保存到D:/uploads目录下 File dest = new File(filepath); file.transferTo(dest); return "文件上传成功"; } catch (Exception e) { e.printStackTrace(); return "文件上传失败"; } } @GetMapping("/{name:.+}") public ResponseEntity<Resource> download(@PathVariable String name) throws IOException { String filepath = "D:/uploads/" + name; // 假设文件保存在D:/uploads目录下 File file = new File(filepath); if (!file.exists()) { return ResponseEntity.notFound().build(); } Resource resource = new UrlResource(file.toURI()); HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + name); return ResponseEntity.ok().headers(headers).contentLength(file.length()).body(resource); } } ``` 这样,我们就实现了一个基于Spring Boot和MyBatis文件上传功能。其中,文件上传时会将文件信息保存到数据库中,并将文件保存到磁盘中,文件下载时会从磁盘中读取文件并返回给客户端。注意,在上传和下载文件时,需要根据实际情况修改保存文件路径、文件访问URL等参数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值