1. 部门管理搭建

在pojo包里面创建2个java实体类,一个是Dept(也就是部门),第二个是Result类,值得一提的是,这个Result类是用来封装接口的统一返回格式,通常包含状态码、消息和实际数据。也是一个小小的规范。

Dept.java

这里就体现出lombok的优势了,@Data注解可以生成get和set方法,@NoArgsConstructor @AllArgsConstructor分别是无参构造和有参构造。注意这里的数据名称要和数据库里面的名称伊一样,不然后面返回的值会是null(当然如果不一样后续可以通过手动或者取别名的方法)

package com.yourena.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
    private Integer id;
    private String name;
    private LocalDateTime create_Time;
    private LocalDateTime update_Time;
}

Result.java

package com.yourena.pojo;

import lombok.Data;

import java.io.Serializable;

/**
 * 后端统一返回结果
 */
@Data
public class Result {

    private Integer code; //编码:1成功,0为失败
    private String msg; //错误信息
    private Object data; //数据

    public static Result success() {
        Result result = new Result();
        result.code = 1;
        result.msg = "success";
        return result;
    }

    public static Result success(Object object) {
        Result result = new Result();
        result.data = object;
        result.code = 1;
        result.msg = "success";
        return result;
    }

    public static Result error(String msg) {
        Result result = new Result();
        result.msg = msg;
        result.code = 0;
        return result;
    }

}

在service包下创建接口以及这个接口的实现类,在mapper包下创建DeptMapper来管理部门数据,controller包下创建DeptController,我们部门管理功能的项目框架就搭建好了。

2.接口开发(部门查询)

我们进行部门查询的功能开发前首先要明确实现的逻辑,mapper是用来获取数据库的数据,service是逻辑实现层,用于对数据进行处理,controller适用于接受请求返回数据。那我们的整体逻辑就是:1.通过mapper来执行SQL语句来查询所有部门数据。2.在service里通过调用mapper来获取数据并对其进行处理(这里仅查询无需处理)3.在controller里返回数据。

首先是在mapper里面进行SQL语句来获取数据,这里的SQL语句比较简单,可以直接使用注解来编写,若要实现复杂的SQL语句,最好是用XML进行映射

package com.yourena.mapper;

import com.yourena.pojo.Dept;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface DeptMapper {
    @Select("select id,name,create_time,update_time from dept order by update_time")
    List<Dept> findAll();
}

在service里进行数据的逻辑处理,首先要获取数据,以下分别是接口和接口实现类

package com.yourena.service;

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

public interface DeptService {

    List<Dept> findAll();
}

package com.yourena.service.Impl;

import com.yourena.mapper.DeptMapper;
import com.yourena.pojo.Dept;
import com.yourena.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> findAll() {
        return deptMapper.findAll();
    }
}

这里使用@Autowired用于自动装配依赖对象。它可以标注在字段、构造方法、Setter 方法上,Spring 容器会自动查找匹配的 Bean 并注入。这样注入DeptMapper之后,就可以调用里面的findAll方法来获取数据

之后在controller里面就可以调用service来返回数据,最终返回的值为Result类型,通常服务端返回的类型都是Result类型

package com.yourena.controller;

import com.yourena.pojo.Dept;
import com.yourena.pojo.Result;
import com.yourena.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class DeptController {
    @Autowired
    private DeptService deptService;
    @GetMapping ("/depts")
    public Result list(){
        System.out.println("查询所有部门信息");
        List<Dept> deptlist = deptService.findAll();
        return Result.success(deptlist);
    }
}

下面是用APIFox进行的测试,可以看到服务端成功返回了需要的数据

总结一下逻辑顺序:mapper用来获取数据,service通过mapper获取数据后对数据进行逻辑处理,controller是通过service来返回数据。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐