自学内容网 自学内容网

部门管理系统功能完善(删除部门、添加部门、根据 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 的注解,标准且简洁实现了这几个功能。


原文地址:https://blog.csdn.net/zzb1580/article/details/143926654

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!