首页 > 其他分享 >部门管理系统功能完善(删除部门、添加部门、根据 ID 查询部门 和 修改部门)

部门管理系统功能完善(删除部门、添加部门、根据 ID 查询部门 和 修改部门)

时间:2024-11-20 22:15:42浏览次数:3  
标签:功能完善 Dept public update id dept 部门 Result ID

一、目标

  继续实现 删除部门添加部门根据 ID 查询部门修改部门 的详细功能实现,分为 Controller 层Service 层Mapper 层。

二、代码分析

总体代码:


Controller 层:

package com.zhang.Controller;
@Slf4j
@RequestMapping("/depts")
@RestController
public class DeptController {
    @Autowired
    private DeptService deptService;
    @GetMapping
    public Result list() throws Exception {
//        src/main/resources/dept.txt
        List<Dept> deptlist = deptService.list();
        return Result.success(deptlist);
    }

    @DeleteMapping
    public Result delete(Integer id){
        log.info("删除部门ID: " + id);
        deptService.delete(id);
        return Result.success();
    }
    @PostMapping
    public Result add(@RequestBody Dept dept){
        log.info("新增部门: " + dept);
        deptService.add(dept);
        return Result.success();
    }

    @GetMapping("{id}")
    public Result getById(@PathVariable Integer id){
        log.info("根据ID查询部门: " + id);
        Dept dept = deptService.getById(id);
        return Result.success(dept);
    }
    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("更新部门: " + dept);
        deptService.updata(dept);
        return Result.success();
    }


Service 层:

package com.zhang.Service.impl;
@Service
public class DeptServiceimpl implements DeptService {
    @Autowired
    private DeptMapper deptMapper;
    @Override
    public List<Dept> list() throws Exception {
        return deptMapper.findAll();
    }

    @Override
    public void delete(Integer id) {
        deptMapper.deleteById(id);
    }

    @Override
    public void add(Dept dept) {
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());
        deptMapper.add(dept);
    }

    @Override
    public Dept getById(Integer id) {
        Dept dept = deptMapper.getById(id);
        return dept;
    }

    @Override
    public void updata(Dept dept) {
        dept.setUpdateTime(LocalDateTime.now());
        deptMapper.update(dept);
    }
}

Mapper 层:

package com.zhang.Mapper;

import com.zhang.pojo.Dept;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface DeptMapper {
    @Select("select id, name, create_time, update_time from dept")
    public List<Dept> findAll();
    @Delete("delete from dept where id = #{id}")
    void deleteById(Integer id);
    @Insert("insert into dept (name, create_time, update_time) VALUES (#{name}, #                            
    {createTime}, #{updateTime})")
    void add(Dept dept);
    @Select("select id, name, create_time, update_time from dept where id = #{id}")
    Dept getById(Integer id);
    @Update("update dept set name = #{name}, update_time = #{updateTime} where id = #{id}")
    void update(Dept dept);

}

1. 删除部门

@DeleteMapping("/depts")
public Result delete(@RequestParam(name = "id") Integer _id){
    System.out.println(_id);
    return Result.success();
    }

@Override
public void delete(Integer id) {
    deptMapper.deleteById(id);
}


@Delete("delete from dept where id = #{id}")
void deleteById(Integer id);

功能描述:

  • 通过 HTTP DELETE 请求,接收需要删除的部门 ID。
  • Controller 层 接收 ID,调用 Service 层的 delete 方法。
  • Service 层 调用 Mapper 层 执行 SQL 语句 DELETE FROM dept WHERE id = #{id},完成删除操作。
  • 最终返回通用结果对象 Result.success() 作为响应。

注解解释:

  • @DeleteMapping
    • 指定此方法处理 HTTP DELETE 请求。
    • 无需显式指定路径,默认映射到 /depts(基于类上 @RequestMapping("/depts") 的定义)。
  • log.info(...)
    • 使用 Lombok 提供的 @Slf4j 注解 打印日志,方便调试,记录当前删除的部门 ID。
  • Result.success()
    • 返回标准的 JSON 响应格式,表示操作成功。
  • @Delete
    • MyBatis 提供的注解,用于直接编写 SQL DELETE 语句。
    • 其中 #{id} 表示使用 MyBatis 的参数占位符,自动将方法的参数绑定到 SQL 中的 id

2. 添加部门

@PostMapping
public Result add(@RequestBody Dept dept) {
    log.info("新增部门: " + dept);
    deptService.add(dept);
    return Result.success();
}


@Override
public void add(Dept dept) {
    dept.setCreateTime(LocalDateTime.now());
    dept.setUpdateTime(LocalDateTime.now());
    deptMapper.add(dept);
}


@Insert("insert into dept (name, create_time, update_time) VALUES (#{name}, #{createTime},         
       #{updateTime})")
void add(Dept dept);

功能描述:

  • 通过 HTTP POST 请求,接收需要添加的部门数据(JSON 格式)。
  • Controller 层 将 JSON 数据绑定到 Dept 对象,并调用 Service 层的 add 方法。
  • Service 层 设置 createTimeupdateTime 字段为当前时间,并调用 Mapper 层 执行插入操作。
  • Mapper 层 执行 SQL 语句 INSERT INTO dept (...) VALUES (...),将新部门数据插入数据库。

注解解释:

  • @PostMapping
    • 指定此方法处理 HTTP POST 请求,通常用于新增数据。
  • @RequestBody
    • 表示从 HTTP 请求体中解析 JSON 数据,并自动绑定到方法参数 dept。
  • 日志记录
    • 打印新增部门信息,便于调试。
  • @Insert
    • MyBatis 提供的注解,用于执行 SQL INSERT 操作。
    • 通过 #{name}, #{createTime}, #{updateTime}Dept 对象的字段动态绑定到 SQL 中。

3. 根据 ID 查询部门

@GetMapping("{id}")
public Result getById(@PathVariable Integer id) {
    log.info("根据ID查询部门: " + id);
    Dept dept = deptService.getById(id);
    return Result.success(dept);
}


@Override
public Dept getById(Integer id) {
    Dept dept = deptMapper.getById(id);
    return dept;
}


@Select("select id, name, create_time, update_time from dept where id = #{id}")
Dept getById(Integer id);

功能描述:

  • 通过 HTTP GET 请求,使用路径参数传递部门 ID。
  • Controller 层 调用 Service 层的 getById 方法。
  • Service 层 调用 Mapper 层 执行查询语句 SELECT ... FROM dept WHERE id = #{id}
  • 将查询到的 Dept 对象封装到通用结果对象中返回给客户端。

注解解释:

  • @GetMapping("{id}")
    • 处理 HTTP GET 请求,并将 URL 中的路径参数绑定到方法参数。
  • @PathVariable
    • 将路径中的 id 部分自动绑定到 id 参数。
  • @Select
    • MyBatis 提供的注解,用于执行 SQL SELECT 查询。
    • 通过 #{id} 绑定方法参数,动态构建查询。

4. 修改部门

@PutMapping
public Result update(@RequestBody Dept dept) {
    log.info("更新部门: " + dept);
    deptService.updata(dept);
    return Result.success();
}


@Override
public void updata(Dept dept) {
    dept.setUpdateTime(LocalDateTime.now());
    deptMapper.update(dept);
}


@Update("update dept set name = #{name}, update_time = #{updateTime} where id = #{id}")
void update(Dept dept);

功能描述:

  • 通过 HTTP PUT 请求,接收需要更新的部门数据(JSON 格式)。
  • Controller 层 调用 Service 层的 updata 方法。
  • Service 层 更新部门的 updateTime 字段为当前时间,调用 Mapper 层 执行更新操作。
  • Mapper 层 执行 SQL 语句 UPDATE dept SET ... WHERE id = #{id},完成数据库更新。

注解解释:

  • @PutMapping
    • 处理 HTTP PUT 请求,用于更新资源数据。
  • @RequestBody
    • 绑定 JSON 数据到方法参数 dept
  • @Update
    • MyBatis 提供的注解,用于执行 SQL UPDATE 操作。
    • 动态绑定 Dept 对象的字段到 SQL 中,实现灵活的更新操作。

三、总结

  通过以上功能实现,完善了 删除部门添加部门查询部门修改部门 的完整流程。通过 Spring Boot 的分层架构(Controller、Service、Mapper)和 MyBatis 的注解,标准且简洁实现了这几个功能。

标签:功能完善,Dept,public,update,id,dept,部门,Result,ID
From: https://blog.csdn.net/zzb1580/article/details/143926654

相关文章

  • 部门信息管理系统Dao层优化(数据库)
    一、目标 因为业务中经常需要将数据储存在数据库中,所以之前所设计的从文本文件中读取数据的Dao层已经不能再用,现在需求为:查询数据库表中的所有部门数据,展示在页面上。准备工作: 1.准备数据库表`dept`(部门表),以及实体类`Dept`。 2.在项目中引入MyBatis的起步依赖......
  • Android core control目录下的作用
    在Android系统中,corecontrol的目录通常位于:/sys/module/core_ctl/parameters/该目录包含一系列文件,用于控制和调节Android的core_ctl模块的行为。core_ctl是专门为多核处理器设计的一种动态核心管理机制,尤其在big.LITTLE架构下,用于平衡性能和功耗。以下是该目录下......
  • idea中maven的配置
    创建Maven项目选择NewProject。选择Maven,然后点击Next。选择Createfromarchetype(如果你想使用原型)或直接点击Next。输入项目的GroupId和ArtifactId,然后点击Next。选择项目的保存位置,然后点击Finish。导入已有的Maven项目:选择Open,然后选择你的Maven项目的......
  • IDEA如何找到在IDEA中下载jdk
    前言大家好,我是小徐啊。在使用IDEA开发java应用的时候,都是需要配置好jdk的环境的。当然,如果我们一开始,先安装好了jdk,那就不需要安装了。不然的话,我们也可以在IDEA中便捷的安装jdk。今天,小徐就来教大家如何在IDEA中安装jdk。如何下载jdk首先,点击下文件,项目结构选项。然后,在项......
  • 安装arduino ide2.3之后无法识别端口问题,黄色感叹号
    CH341SER.EXE-南京沁恒微电子股份有限公司下载这个ch340驱动,安装之后就ok了这是如何修改themeDarkThemeforArduinoIDE|ArduinoProjectHub这是链接lcd12864液晶显示屏的例子MCP23017_LCD12864/examples/helloword/helloword.inoatmain·andhieSetyabudi/MCP2301......
  • 【图神经网络】 IDGL原文精讲(全网最细致篇)
    GCN网络系列论文精讲部分0.摘要1引言2迭代深度图学习框架2.1问题定义2.2图学习和图嵌入:统一视角2.3将图学习视为相似性度量学习2.4图节点嵌入和预测2.5图正则化2.6与混合损失的联合学习3实验数据集和基准实验结果分析模型4相关工作5笔者总结论文精讲......
  • android 拍照图片保存方法之二
    直接利用(Bitmap)extras.get("data")方法获得的图片是系统自动压缩过的缩略图,清晰图不够。这次介绍的方法是通过uri传递来保存图片。大概思路如下:在程序内部创建一个临时文件,利用临时文件的uri传递给响应事件获得原图,并且在一个imageview中显示出来,如果喜欢的话就重新命名......
  • IDM冻结试用期
    本文并非原创,详细内容在GitHub上https://github.com/lstprjct/IDM-Activation-Script/blob/main/README.mdhttps://github.com/Mercury-Z/IDM-Activation-Script-Chinese我讲讲我的使用过程,现在CSDN上阅读量比较多的帖子都是IDM破解版安装包,但就怕安装包有夹带,而且我们小白的食......
  • Pylon C++ Programmer's Guide
    移步至PylonC++Programmer'sGuide观看效果更佳GettingStartedpylon编程指南是一个关于如何使用BaslerpylonC++API进行编程的快速指南。它可以与pylon示例代码一起使用,以帮助初学者入门。此外,APIrenfence提供了有关BaslerpylonC++接口的描述。接口的描述也可在pylon的......
  • 智能绘画Midjourney AIGC在设计领域中的应用从入门到精通
    智能绘画MidjourneyAIGC在设计领域中的应用:从入门到精通引言随着人工智能技术的飞速发展,AIGC(ArtificialIntelligenceforGenerativeContent)技术正逐步渗透到各个创作领域,特别是在设计行业中引发了革命性的变革。Midjourney作为AI绘画技术的代表,以其强大的图片生成能力和多样......