SpringBootWeb案例1--部门管理

我们按照前面学习的开发流程,开始完成功能开发。首先按照之前分析的需求,完成部门管理的功能开发。

开发的部门管理功能包含:

  1. 查询部门

  2. 删除部门

  3. 新增部门

  4. 更新部门(不讲解,自己独立完成)

2.1 查询部门

2.1.1 原型和需求

查询的部门的信息:部门ID、部门名称、修改时间

通过页面原型以及需求描述,我们可以看到,部门查询,是不需要考虑分页操作的。

2.1.2 接口文档

部门列表查询

  • 基本信息

请求路径:/depts

请求方式:GET

接口描述:该接口用于部门列表数据查询

  • 请求参数

  • 响应数据

    参数格式:application/json

    参数说明:

参数名类型是否必须备注
codenumber必须响应码,1 代表成功,0 代表失败
msgstring非必须提示信息
dataobject[ ]非必须返回的数据
|- idnumber非必须id
|- namestring非必须部门名称
|- createTimestring非必须创建时间
|- updateTimestring非必须修改时间

 响应数据样例:

{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "id": 1,
      "name": "学工部",
      "createTime": "2022-09-01T23:06:29",
      "updateTime": "2022-09-01T23:06:29"
    },
    {
      "id": 2,
      "name": "教研部",
      "createTime": "2022-09-01T23:06:29",
      "updateTime": "2022-09-01T23:06:29"
    }
  ]
}

2.1.3 思路分析

2.1.4 功能开发

通过查看接口文档:部门列表查询

请求路径:/depts

请求方式:GET

请求参数:无

响应数据:json格式

DeptController

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

    //@RequestMapping(value = "/depts" , method = RequestMethod.GET)
    @GetMapping("/depts")
    public Result list(){
        log.info("查询所有部门数据");
        List<Dept> deptList = deptService.list();
        return Result.success(deptList);
    }
}

自己写的笔记:

DeptController

@Slf4j  //记录日志
@RestController
public class DeptController {

    调试日志
    //private static Logger log = LoggerFactory.getLogger(DeptController.class);

    @RequestMapping("/depts")
    public Result list(){
        记录日志
        log.info("查询全部部门数据");
        return  Result.success();
    }
    
}

先启动 看看能不能启动得起来

获取到一个JSON格式的数据

这个JSON格式的数据就是Result转JSON之后的结果

因为我们在Controller加了一个注解@RestController   

 

证明接口可以访问到

当前接口通过gpt post等方式访问都是可以的

可是我们的接口文档要求我们用GET请求

那如何去限定请求方式是GET请求

RequestMapping注解当中有一个属性就是来指定请求方式method

@Slf4j  //记录日志
@RestController
public class DeptController {

    调试日志
    //private static Logger log = LoggerFactory.getLogger(DeptController.class);

    //@RequestMapping(value = "/depts",method = RequestMethod.GET)  //指定请求方式为GET
    @GetMapping("/depts")
    public Result list(){
        记录日志
        log.info("查询全部部门数据");
        return  Result.success();
    }

}

Controller 要调用Service

所以我们要在Controller里面注入Service对象

面向接口编程    所以注入一个Service接口对象

@Autowired
private DeptService deptService;

写实现类

因为要查询数据  得调用数据 调用数据得去数据库里面查找

所以Service要调用Map    所以在ServiceImpl实现类要注入一个Map 接口对象,才能调用map的方法

注入map对象  就可以调用map接口中的方法

在Controller类中注入Service对象   用这个注入的Service对象就可以调用Service接口中的方法

@Autowired

private DeptService deptService;

//调用service查询全部部门数据  所以用list集合安装
List<Dept> deptList =  deptService.list();

在ServiceImpl实现类中注入Mapper对象   用这个注入的Mapper对象就可以调用

Mapper接口中的方法
@Autowired
 private DeptMapper deptMapper;
 //查询数据 要去数据库查询  所以注入map对象  用对象去DeptMapper接口调用方法
return deptMapper.list();

总结:在类中注入对象 调用接口中的方法

然后因为查询全部部门的数据  SQL语句比较简单 所以我们用注解进行开发

流程:

前端发送请求之后  会发送到Controller方法   Controller方法 中调用Service来获取数据  

Service中调用Map接口中的方法 来查询全部的部门信息   Map接口就会往数据库中发送

@Select("select  * from dept") SQL语句  查询全部的部门  并且把查询部门的信息封装到list集合当中    最终将集合的数据返回给Service  Service又返回给了 Controller   Controller拿到返回回来的数据之后    需要将这个数据返回给前端   

所以我们返回的是

流程图

重启测试

@Slf4j注解源码:

 DeptService(业务接口)

public interface DeptService {
    /**
     * 查询所有的部门数据
     * @return   存储Dept对象的集合
     */
    List<Dept> list();
}

DeptServiceImpl(业务实现类)

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

DeptMapper

@Mapper
public interface DeptMapper {
    //查询所有部门数据
    @Select("select id, name, create_time, update_time from dept")
    List<Dept> list();

2.1.5 功能测试

功能开发完成后,我们就可以启动项目,然后打开postman,发起GET请求,访问 :http://localhost:8080/depts

2.2 前后端联调

完成了查询部门的功能,我们也通过postman工具测试通过了,下面我们再基于前后端分离的方式进行接口联调。具体操作如下:

1、将资料中提供的"前端环境"文件夹中的压缩包,拷贝到一个没有中文不带空格的目录下

2、拷贝到一个没有中文不带空格的目录后,进行解压(解压到当前目录)

3、启动nginx

 4、打开浏览器,访问:http://localhost:90

5、测试:部门管理 - 查询部门列表

说明:只要按照接口文档开发功能接口,就能保证前后端程序交互

  • 后端:严格遵守接口文档进行功能接口开发

  • 前端:严格遵守接口文档访问功能接口

http://localhost:90/api/depts

请求的是nginx服务器  nginx服务器接收到请求之后    最终nginx服务器会把这个请求 转给后端8080端口的tomcat    所以实际上是由tomcat来处理的这次请求

 

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值