SpringBootWeb项目
TILAS智能学习辅助系统
@RequestMapping()注解可以抽取资源链接的共性
新增员工
//控制层
@PostMapping("/emps")
Result insert(@RequestBody Emp emp);
@Override
public Result insert(Emp emp) {
empService.insert(emp);
return Result.success();
}
//业务层
void insert(Emp emp);
@Override
public void insert(Emp emp) {
emp.setCreateTime(LocalDateTime.now());
emp.setUpdateTime(LocalDateTime.now());
empMapper.insert(emp);
}
//持久层
void insert(Emp emp);
<insert id="insert">
insert into emp values (#{id},#{username},#{password},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})
</insert>
文件上传
本地存储
前端通过设置enctype="multipart/form-data"传给我们二进制文件参数
我们需要用MultipartFile类型的对象进行接收
传入的文件实际上是暂存在了系统的临时文件中
所以我们需要先将临时文件保存
@Override
public Result upload(MultipartFile multipartFile) throws IOException {
String ofn = multipartFile.getOriginalFilename();
String nfn = UUID.randomUUID() + "." + ofn.split("\\.")[ofn.split("\\.").length - 1];
multipartFile.transferTo(new File("D:\\documents\\code\\TLIAS\\" + nfn));
System.out.println(nfn);
return Result.success(nfn);
}
multipart/form-data:将文件以二进制形式上传
上传到阿里云存储
@Override
public Result upload(MultipartFile multipartFile) throws IOException {
String url = aliOSSUtils.upload(multipartFile);
System.out.println(url);
return Result.success(url);
}
工具类
package com.example.tlias.util;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
/**
* 阿里云 OSS 工具类
*/
@Component
public class AliOSSUtils {
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
/**
* 实现上传图片到OSS
*/
public String upload(MultipartFile multipartFile) throws IOException {
// 获取上传的文件的输入流
InputStream inputStream = multipartFile.getInputStream();
// 避免文件覆盖
String fileName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss")) + multipartFile.getOriginalFilename();
//上传文件到 OSS
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient
ossClient.shutdown();
return url;// 把上传到oss的路径返回
}
}
配置文件注入
使用@Value注解注入
@Value("${aaa.bbb.ccc}")
使用@ConfigurationProperties注解注入封装
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties{
........
}
yml
较properties来说更为简化,重数据轻格式
server.port=8080#properties
server:#yml
port: 8000#值前需要加空格
员工修改
数据回显
//控制层
@GetMapping("/{id}")
Result selectById(@PathVariable Integer id);
@Override
public Result selectById(Integer id) {
return Result.success(empService.selectById(id));
}
//业务层
Emp selectById(Integer id);
@Override
public Emp selectById(Integer id) {
return empMapper.selectById(id);
}
//持久层
@Select("select * from emp where id = #{id}")
Emp selectById(@Param("id") Integer id);
数据修改
//控制层
@PutMapping("")
Result update(@RequestBody Emp emp);
@Override
public Result update(Emp emp) {
empService.update(emp);
return Result.success();
}
//业务层
void update(Emp emp);
@Override
public void update(Emp emp) {
emp.setUpdateTime(LocalDateTime.now());
empMapper.update(emp);
}
//持久层
void update(Emp emp);
<update id="update">
update emp
<set>
<if test="username != ''">
username = #{username},
</if>
<if test="password != ''">
password = #{password},
</if>
<if test="name != ''">
name = #{name},
</if>
gender = #{gender},
image = #{image},
job = #{job},
entrydate = #{entrydate},
dept_id = #{deptId},
<if test="create_time = null">
create_time = now(),
</if>
update_time = #{updateTime}
</set>
where id = #{id}
</update>