0


基于Spring Boot的员工与部门信息管理系统:增删改查全攻略

介绍项目的搭建过程,包括依赖管理、数据库设计、实体类的创建、控制器的编写以及前端的简单实现。希望通过本项目的学习,能够加深大家对Spring Boot及相关技术的理解,为后续的开发奠定基础。


前言

在现代企业管理中,员工和部门信息的有效管理至关重要。随着信息技术的不断发展,传统的手工管理方式已经逐渐无法满足企业对效率和准确性的要求。Spring Boot作为一种简化的Java开发框架,以其快速开发和易于配置的特性,成为构建企业级应用的热门选择。本博客将为大家展示一个基于Spring Boot的员工和部门信息管理系统,通过实现增删改查(CRUD)功能,帮助大家理解如何利用Spring Boot快速构建RESTful API,并实现数据的持久化管理。

我们将逐步介绍项目的搭建过程,包括依赖管理、数据库设计、实体类的创建、控制器的编写以及前端的简单实现。希望通过本项目的学习,能够加深大家对Spring Boot及相关技术的理解,为后续的开发奠定基础。


提示:以下是本篇文章正文内容,下面案例可供参考

环境搭建

  • 准备数据库表(dept、emp)
  • 创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、lombok)
  • 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类
  • 准备对应的Mapper、Service(接口、实现类)、Controller基础结构

开发规范

REST(REpresentational State Transfer),表述性状态转换,它是一种软件架构风格。

注意事项

  • REST是风格,是约定方式,约定不是规定,可以打破。
  • 描述模块的功能通常使用复数,也就是加s的格式来描述,表示此类资源,而非单个资源。如:users、emps、books…

前后端交互统一响应结果 Result

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应信息 描述字符串
    private Object data; //返回的数据
    public static Result success(){ //增删改 成功响应
        return new Result(1,"success",null);
    }
    public static Result success(Object data){ //查询 成功响应
        return new Result(1,"success",data);
    }
    public static Result error(String msg){ //失败响应        return new Result(0,msg,null);
    }
}

查询部门

DeptController

  • 接收请求
  • 调用service查询部门
  • 响应

DeptService

  • 调用mapper接口查询

DeptMapper

  • select * from dept

删除部门

DeptController

  • 接收请求参数id
  • 调用service删除部门
  • 响应 @DeleteMapping @PathVariable

DeptService

  • 调用mapper接口执行删除操作

DeptMapper

  • delete from dept where id = ?

新增部门

DeptController

  • 接收请求参数
  • 调用service新增部门
  • 响应

DeptService

  • 补充基础属性
  • 调用mapper接口执行新增操作

DeptMapper

  • insert into dept values(?,?,?);

注意事项

  • 一个完整的请求路径,应该是类上的 @RequestMapping 的value属性 + 方法上的 @RequestMapping的value属性。

分页查询

EmpController

  • 接收分页参数page、pageSize
  • 调用service进行分页查询,获取PageBean
  • 响应

EmpService

  • 调用mapper接口查询总记录数
  • 调用mapper接口获取数据列表
  • 封装PageBean对象,返回

EmpMapper

  • select count(*) from emp;
  • select * from emp limit ?,? ;

@RequestParam 的属性defaultValue可以来设置参数的默认值

分页插件PageHelper

条件分页查询

EmpController

  • 接收参数(分页参数、查询条件)
  • 调用service进行分页条件查询,获取PageBean
  • 响应

EmpService

  • 使用PageHelper完成分页条件查询
  • 封装PageBean对象,返回

EmpMapper

  • select * from emp where name like concat('%', ?, '%') and gender = ? and entrydate between ? and ? order by update_time desc;

删除员工

EmpController

  • 接收路径参数id数组
  • 调用service进行批量删除
  • 响应 @DeleteMapping @PathVariable

EmpService

  • 调用mapper接口进行批量删除操作

EmpMapper

  • delete from emp where id in (?,?,?);

新增员工

EmpController

  • 接收并封装参数
  • 调用service方法保存数据
  • 响应

EmpService

  • 补充实体基础属性
  • 调用mapper接口进行保存数据操作

EmpMapper

insert into emp(….) values(?,?,?);

文件上传

  • 文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。
  • 文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。

<form action="/upload" method="post" enctype="multipart/form-data">
    姓名: <input type="text" name="username"><br>
    年龄: <input type="text" name="age"><br>
    头像: <input type="file" name="image"><br>
    <input type="submit" value="提交">
</form>
@RestController
public class UploadController {
    @PostMapping("/upload")  
    public Result upload( String username , Integer age,@RequestParam("image")MultipartFile file) {
        return Result.success();
    }
}

本地存储

在服务端,接收到上传上来的文件之后,将文件存储在本地服务器磁盘中。

@RestController
public class UploadController {
    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws IOException {
        //获取原始文件名
        String originalFilename = image.getOriginalFilename();
        //构建新的文件名
        String newFileName = UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));
        //将文件保存在服务器端 E:/images/ 目录下
        image.transferTo(new File("E:/images/"+newFileName));
        return Result.success();
    }
}

在SpringBoot中,文件上传,默认单个文件允许最大大小为 1M。如果需要上传大文件,可以进行如下配置:

#配置单个文件最大上传大小
spring.servlet.multipart.max-file-size=10MB#配置单个请求最大上传大小(一次请求可以上传多个文件)
spring.servlet.multipart.max-request-size=100MB

阿里云OSS

阿里云是阿里巴巴集团旗下全球领先的云计算公司,也是国内最大的云服务提供商 。

阿里云对象存储OSS(Object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

Bucket:存储空间是用户用于存储对象(Object,就是文件)的容器,所有的对象都必须隶属于某个存储空间。

SDK:Software Development Kit 的缩写,软件开发工具包,包括辅助软件开发的依赖(jar包)、代码示例等,都可以叫做SDK。

步骤

  • 引入阿里云OSS上传文件工具类(由官方的示例代码改造而来)
  • 上传图片接口开发
@RestController
public class UploadController {
    @Autowired
    private AliOSSUtils aliOSSUtils;
    @PostMapping(“/upload”)
    public Result upload(MultipartFile image) throws IOException {
    String url = aliOSSUtils.upload(image); //调用阿里云OSS工具类,将上传上来的文件存入阿里云
    return Result.success(url); //将图片上传完成后的url返回,用于浏览器回显展示
    }
}

修改员工

查询回显

EmpController

  • 接收路径参数id
  • 调用service方法查询数据
  • 响应 @GetMapping @PathVariable

EmpService

  • 调用mapper接口查询数据

EmpMapper

  • select * from emp where id = ?;

修改员工

EmpController

  • 接收请求参数并封装
  • 调用service方法执行修改操作
  • 响应 @PutMapping @RequestBody

EmpService

  • 补充基础数据
  • 调用mapper接口修改数据

EmpMapper

  • update emp set username=?, name=?, gender=? …. where id = ?;

配置文件

@Value 注解通常用于外部配置的属性注入,具体用法为: @Value("${配置文件中的key}")

配置格式

SpringBoot提供了多种属性配置方式

application.properties

server.port=8080
server.address=127.0.0.1

application.yml

server:
   port:  8080
   address: 127.0.0.1

application.yaml

erver:
   port:  8080
   address: 127.0.0.1

yml

基本语法:

  • 大小写敏感
  • 数值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 表示注释,从这个字符一直到行尾,都会被解析器忽略

#配置服务器相关信息
server:
   port:  8080
   address:  127.0.0.1

对象/Map集合:

user:
   name: zhangsan
   age: 18
   password: 123456

数组/List/Set集合:

hobby:
  - java
  - game
  - sport

在application.yml中的配置案例相关的配置项

@ConfigurationProperties 与 @Value

相同点

  • 都是用来注入外部配置的属性的。

不同点

  • @Value注解只能一个一个的进行外部属性的注入。
  • @ConfigurationProperties可以批量的将外部的属性配置注入到bean对象的属性中。

总结

通过本项目的实现,我们成功构建了一个基本的员工和部门信息管理系统,掌握了Spring Boot的基本使用方法和开发流程。在项目中,我们学习了如何设计数据库表、创建实体类、编写控制器以及进行数据的增删改查操作。同时,我们也了解了Spring Boot的自动配置特性、依赖注入以及RESTful API的设计理念。

本项目不仅提升了我们的编程能力,也为我们在实际工作中解决类似问题提供了参考。在未来的开发中,我们可以在此基础上进一步扩展功能,如实现用户认证、数据验证、接口文档生成等。希望大家能够将所学知识运用到实际项目中,不断提升自己的技术水平。


本文转载自: https://blog.csdn.net/m0_63267251/article/details/143434194
版权归原作者 程序猿零零漆 所有, 如有侵权,请联系我们删除。

“基于Spring Boot的员工与部门信息管理系统:增删改查全攻略”的评论:

还没有评论