JavaWeb Day10 案例-部门管理

news2024/11/28 12:55:00

目录

一、查询部门

(一)需求

(二)思路

(三)查询部门

(四)、前后端联调

二、删除

(一)需求

(二)思路

(三)删除部门

①controller层

②mapper层(接口)

③service层

1.接口

2.实现类

④结果

1.后端数据库

2.postman接口测试:注意请求路径/请求方式/请求参数

3.后端数据库(已删除)

4.前端操作

5.后端数据库

三、新增

(一)需求

(二)思路

(三)新增部门

①controller层

②service层

1.接口

2.实现类

③mapper层

④结果

1.后端数据库

2.postman接口测试:注意请求路径/请求方式/请求参数

3.后端数据库(已新增)

4.前端操作

5.后端数据库

四、修改

(一)需求

(二)思路

(三)修改部门

 ①Controller层

②Mapper层

③Service层

1.接口

2.实现类

④结果

1.后端数据库

2.postman接口测试:注意请求路径/请求方式/请求参数

3.后端数据库(失败)

5.后端数据库

五、简化

五、总结


一、查询部门

(一)需求

接口文档

(二)思路

前端发起查询部门的请求

该请求被DeptController进行处理,不能进行数据逻辑处理和服务操作,调用Service层DeptService

而Service是进行逻辑处理的,要操作数据库需要调用Mapper层

通过Mapper接口访问数据库,执行SQL语句,将回去的结果返回给Service

Service将结果进行逻辑处理再返回给Controller

Controller将查询结果封装在同一响应结果封装在Result中,响应给前端

(三)查询部门

①Controller层

DeptController.java

package com.itheima.controller;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Slf4j
public class DeptController {
    @Autowired
    private DeptService deptService;
    @GetMapping("/depts")
    public Result list(){
    log.info("查询全部部门数据");
        List <Dept> deptList=deptService.list();
        return Result.success(deptList);
    }
}

1.注解

@RequestMapping需要指定请求路径和指定请求方式,较为繁琐

@GetMapping只需要指定请求路径即可(PostMapping/DeleteMapping/)

2.输出Mybatis日志

@Slf4j

调用log.Info()

3.调用方法

创建一个private私有的Service层对象deptService,调用其方法list()

②Service层

1.DeptService.java接口

package com.itheima.service;

import com.itheima.pojo.Dept;
import java.util.List;

public interface DeptService {
    /**
     * 查询全部部门数据
     * @return
     */
    List<Dept> list();
}

在Service层的接口DeptService中声明方法即可 

2.DeptServiceImpl.java实现类

package com.itheima.service.impl;
import com.itheima.mapper.DeptMapper;
import com.itheima.pojo.Dept;
import com.itheima.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DeptServiceImpl implements DeptService{
    @Autowired
    private DeptMapper deptMapper;
    @Override
    public List<Dept> list() {
        return deptMapper.list();
    }
}

在Service层的DeptServiceImpl实现类中定义list()方法体

创建一个Mapper层对象,调用其list()方法 

③Mapper层

DeptMapper.java接口

package com.itheima.mapper;

import com.itheima.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 部门管理
 */
@Mapper
public interface DeptMapper {
    /**
     * 查询全部部门
     *
     * @return
     */
    @Select("select * from dept")
    List<Dept> list();
}

Mapper层仅仅是一个接口,面向注解编程,@Select中编写SQL语句即可

结果

PostMan报错

404:找不到资源,无非就是接口路径,提交方式、参数类型、返回结果类型有问题。
刚开始是请求路径写错了

500:检查数据库密码和名称是否配置正确

(四)、前后端联调

将前后端过程启动起来,然后访问前端工程,通过前端工程访问服务端程序,进而进行调试

二、删除

(一)需求

(二)思路

(三)删除部门

①controller层

DeptController.java

package com.itheima.controller;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Slf4j
public class DeptController {
    @Autowired
    private DeptService deptService;
   
    @DeleteMapping("/depts/{id}")
    public Result delete(@PathVariable Integer id){
        log.info("根据id删除部门:{}",id);
        deptService.delete(id);
        //删除操作不需要返回数据,data返回null,调用success
        return Result.success();
    }
}

②mapper层(接口)

DeptMapper.java

package com.itheima.mapper;

import com.itheima.pojo.Dept;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 部门管理
 */
@Mapper
public interface DeptMapper {

    /**
     * 根据id删除部门
     * @param id
     */
    @Delete("delete from dept where id=#{id}")
    void deleteById(Integer id);
}

③service层

1.接口

DeptService.java

package com.itheima.service;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;

import java.util.List;

public interface DeptService {
    /**
     * 根据id删除部门信息
     * @return
     */
    void delete(Integer id);
}
2.实现类

DepyServiceImpl.java

package com.itheima.service.impl;
import com.itheima.mapper.DeptMapper;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DeptServiceImpl implements DeptService{
    @Autowired
    private DeptMapper deptMapper;
   
    @Override
    public void delete(Integer id) {
        deptMapper.deleteById(id);
    }

}

④结果

注意:同时启动前后端服务器

1.后端数据库

2.postman接口测试:注意请求路径/请求方式/请求参数

3.后端数据库(已删除)

4.前端操作

此时访问前端页面,id=5的部门已经删除

接下来在前端界面执行删除操作,删除id=4的部门

5.后端数据库

此时查看数据库,id=4的部门已删除

注意级联删除

三、新增

(一)需求

(二)思路

我们只需要接收页面传递过来的参数,将参数保存到数据库即可,底层就是Insert语句

(三)新增部门

①controller层

DeptController.java

package com.itheima.controller;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Slf4j
public class DeptController {
    @Autowired
    private DeptService deptService;
    

    /**
     * 新增部门
     *
     * @return
     */

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

②service层

1.接口

DeptService.java

package com.itheima.service;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;

import java.util.List;

public interface DeptService {
    /**
     * 新增部门数据
     * @return
     */

    void add(Dept dept);
}
2.实现类

DeptServiceImpl.java

package com.itheima.service.impl;
import com.itheima.mapper.DeptMapper;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class DeptServiceImpl implements DeptService{
    @Autowired
    private DeptMapper deptMapper;

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

}

③mapper层

DeptMapper.java

package com.itheima.mapper;

import com.itheima.pojo.Dept;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 部门管理
 */
@Mapper
public interface DeptMapper {
    /**
     * 新增部门信息
     *
     * @return
     */

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

④结果

注意:同时启动前后端服务器

1.后端数据库

2.postman接口测试:注意请求路径/请求方式/请求参数

3.后端数据库(已新增)

4.前端操作

此时访问前端页面,就业部已经新增

接下来在前端界面执行新增操作,

5.后端数据库

此时查看数据库,销售部已增加

四、修改

(一)需求


 

(二)思路

关于P139的修改问题,原理很简单,我们从控制台可以看到,当点击修改按钮时,会发送一个get查询id请求,

然后你需要返回那一个ID的单行数据,然后返回完之后会显示当前修改的部门名称,然后你就可以写修改部门的Put方法,对应了 编辑按钮和确定按钮的请求方式,前端的代码是不需要我们改的,参照接口文档写路径就行

(三)修改部门

 ①Controller层

DeptController.java

package com.itheima.controller;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/depts")
@Slf4j
public class DeptController {
    @Autowired
    private DeptService deptService;

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

    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("修改部门信息:{}",dept);
        deptService.update(dept);
        return Result.success();
    }

}

②Mapper层

DeptMapper.java

package com.itheima.mapper;

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

import java.util.List;

/**
 * 部门管理
 */
@Mapper
public interface DeptMapper {
 
    /**
     * 根据id查询部门信息
     * @param id
     * @return
     */

     @Select("select * from dept where id=#{id}")
    Dept getById(Integer id);
   
    /**
     * 更新部门信息
     * @param dept
     */

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

③Service层

1.接口

DeptService.java

package com.itheima.service;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;

import java.util.List;

public interface DeptService {

    /**
     * 根据id查询部门信息
     * @param id
     * @return
     */
    Dept getById(Integer id);

    /**
     * 更新部门信息
     * @param dept
     */
    void update(Dept dept);
}
2.实现类

DeptServiceImpl.java

package com.itheima.service.impl;
import com.itheima.mapper.DeptMapper;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class DeptServiceImpl implements DeptService{
    @Autowired
    private DeptMapper deptMapper;
   
    /**
     * 根据id查询部门信息
     * @param id
     * @return
     */
    @Override
    public Dept getById(Integer id) {
        return deptMapper.getById(id);
    }

    /**
     * 更新部门信息
     * @param dept
     */
    @Override
    public void update(Dept dept) {
        dept.setUpdateTime(LocalDateTime.now());
        deptMapper.update(dept);
    }

}

④结果

注意:同时启动前后端服务器

1.后端数据库

2.postman接口测试:注意请求路径/请求方式/请求参数

按下编辑,根据id查询部门信息

按下确认修改信息

3.后端数据库(失败)

这里我也不知道为什么postman报错,而前端是正确的

按道理CreateTime不为空才对,@RequestBody把前端响应的JSON参数封装成Dept对象,只传递了id和name,要修改的只有name和updateTime,而前端请求的时候后端响应包括数据库都是在取得,这里我也不知道为什么????????

4.前端操作

点击编辑,发出查询请求,然后回显信息

接下来在前端界面执行修改操作,

5.后端数据库

此时查看数据库,学工部名称已修改

五、简化

公共路径抽取出来

RequestMapping既可以用在类上也可以用在方法上

五、总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1216207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何深度了解汤泉场所?VR全景给你答案

天气逐步转凉&#xff0c;温泉、水会这些室内汤泉场所开始登上消费的主战场。伴随着人们物质生活水平的提高&#xff0c;人们对休闲养生会馆的要求也愈发旺盛&#xff0c;汤泉场所也逐渐从单一的洗浴开始向休闲、娱乐、保健、桑拿等多种业态形式发展&#xff0c;那么大家如何深…

安全狗云安全体系为高校提升立体化纵深防御能力

客户情况 某高校有服务器500台&#xff0c;对外站点200个&#xff0c;核心交换流量20G。 客户痛点 校园网系统分类较多&#xff0c;并且每类网站中安全级重要程度又各不相同&#xff0c;同时有多个网络出口(如&#xff1a;教育网、电信网、移动网等)&#xff0c;二级学院存在…

【java学习—十五】Thread类的有关方法(3)

文章目录 1. 基本方法2. 线程的优先级3. 进阶方法3.1. 举例3.1.1. 线程让步3.1.2. join() 方法3.1.3. sleep()方法3.1.4. stop() 方法3.1.4. isAlive() 方法 1. 基本方法 方法名作用void start()启动线程&#xff0c;并执行对象的 run() 方法run()线程在被调度时执行的操作Str…

电脑提示d3dcompiler43.dll缺失怎么解决?四种方法帮你轻松搞定!

d3dcompiler_43.dll是一个与DirectX相关的动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它主要用于Windows操作系统上的图形和游戏应用程序。这个文件的主要作用是编译和解析DirectX应用程序中的图形代码。 DirectX是一个强大的图形API&#xff08;应用程序编程接口&…

flutter项目中使用阿里图标库自定义图标步骤,5分钟搞定

因为flutter自带的图标可能并不能满足业务需求&#xff0c;所以需要加入图标非常丰富的阿里图标库的支持&#xff0c;阿里图标库的地址&#xff1a;iconfont-阿里巴巴矢量图标库&#xff0c;先看一下使用阿里图标库后的效果图&#xff1a;网页端和手机端都是可以正常运行的&…

Centos7安装frps作内网穿透--实现外部访问家里群晖

实现在外可访问家用群晖 需要在外界访问家里的局域网设备&#xff0c;正常情况是需要有公网IP&#xff0c;而IPV4作为家用&#xff0c;运营商基本不给&#xff0c;除非钞能力&#xff0c;IPV6可以用&#xff0c;但是有缺陷&#xff0c;需要互访的两端都是IPV6才能访问。选择fr…

关于400G光模块的常见问题解答

最近在后台收到了很多用户咨询关于400G光模块的信息&#xff0c;那400G光模块作为当下主流的光模块类型&#xff0c;有哪些问题是备受关注的呢&#xff1f;下面来看看小易的详细解答&#xff01; 1、什么是400G QSFP-DD光模块&#xff1f; 答&#xff1a;400G光模块是指传输速…

Ubuntu16.04上安装Docker

Ubuntu16.04上安装Docker 更新 apt 包索引: sudo apt-get update安装依赖包,以便使用 HTTPS 仓库 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu…

rabbitMQ的direct模式的生产者与消费者使用案例

消费者C1的RoutingKey 规则按照info warn 两种RoutingKey匹配 绑定队列console package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.DeliverCallback;/*** 消费者01的消息接受*/ p…

windows server 华夏ERP部署手册

软件包准备&#xff1a; .安装MySql 找到mysql程序双击进行安装,进入这个页面 选择Server only点击Next 进入到下图,点击execute&#xff0c;等待完成&#xff0c;点击下一步 点击install安装插件 安装完插件点击下一步 等待程序加载完成,点击下一步 继续下一步 进行下一步 进行…

智慧校园电子班牌 智能互联家校互通源码 springboot

利用先进的云计算技术&#xff0c;将教育信息化资源和教学管理系统进行有效整合&#xff0c;实现生态基础数据共享、应用生态统一管理&#xff0c;为智慧教育建设的统一性&#xff0c;稳定性&#xff0c;可扩展性&#xff0c;互通性提供保障的智慧教育一体化云解决方案。 在大数…

VIM去掉utf-8 bom头

Windows系统的txt文件在使用utf-8编码保存时会默认在文件开头插入三个不可见的字符&#xff08;0xEF 0xBB 0xBF&#xff09;称为BOM头 BOM头文件 0.加上BOM标记&#xff1a; :set bomb 1.查询当前UTF-8编码的文件是否有BOM标记&#xff1a; :set bomb? :set bomb? 2.BOM头:文…

麒麟信安助力长沙市就业与社保数据服务中心政务系统向自主创新演进

应用场景 长沙市就业与社保数据服务中心依托长沙市“政务云”的公共基础资源和相应的支撑能力&#xff0c;围绕社保、就业、人事人才、劳动关系等人社全量业务服务&#xff0c;力求建立以“智慧服务、智慧监管、智慧决策”为核心的“智慧人社”综合服务平台&#xff0c;实现人…

Java面向对象2

代码块 代码块的构造顺序优先于构造器 细节

shopee知虾数据:提升Shopee店铺运营效果必备工具—知虾数据工具

在如今竞争激烈的电商市场中&#xff0c;如何提升Shopee店铺的运营效果成为了每个卖家都关注的问题。而Shopee知虾数据工具作为一款专为Shopee虾皮平台设计的数据分析工具&#xff0c;为卖家提供了多项强大的功能&#xff0c;能够帮助卖家在开店、选款、测款、爆款以及初始和成…

flutter仿支付宝余额宝年化收益折线图

绘制: 1.在pubspec.yaml中引入:fl_chart: 0.55.2 2.绘制: import package:jade/utils/JadeColors.dart; import package:util/easy_loading_util.dart; import package:fl_chart/fl_chart.dart; import package:flutter/material.dart; import package:flutter_screenutil/…

【文件上传】01ctfer 文件上传获取flag

1.1漏洞描述 漏洞名称01ctfer 文件上传漏洞类型文件上传漏洞等级⭐⭐⭐漏洞环境docker攻击方式 1.2漏洞等级 高危 1.3影响版本 暂无 1.4漏洞复现 1.4.1.基础环境 靶场docker工具BurpSuite 1.4.2.环境搭建 1.创建docker-compose.yml文件 version: 3.2 services: upload: …

科技创新 共铸典范 | 江西卫健办邓敏、飞图影像董事长洪诗诗一行到访拓世科技集团,提振公共卫生事业发展

2023年11月15日&#xff0c;拓世科技集团总部迎来了江西省卫健项目办项目负责人邓敏、江西飞图影像科技有限公司董事长洪诗诗一行的考察参观&#xff0c;集团董事长李火亮、集团高级副总裁方高强进行热情接待。此次多方交流&#xff0c;旨在共同探讨携手合作&#xff0c;激发科…

kubernetes部署jenkins

参考&#xff1a;kubernetes 部署 Jenkins jenkins kubernetes pipeline_mob64ca14116c53的技术博客_51CTO博客 第七篇&#xff1a;kubernetes部署jenkins-CSDN博客 1、当前kubernetes集群已部署nfs服务 showmount -e 创建jenkins目录 2、添加jenkins的pvc kubectl create …

spring cloud之配置中心

Config 统一配置中心(*) 1.简介 # 统一配置中心 - 官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.3.RELEASE/reference/html/#_spring_cloud_config_server- config 分为 config server 和 config client。用来统一管理所有微服务的配置统一配置…