Springboot综合练习,使用三层架构,结合Mybatis操作数据库,接收前端发送的请求,并进行对应的逻辑处理,对数据库增删改查。
pojo
package com.wzb.pojo20240928;
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 createTime;
private LocalDateTime updateTime;
}
package com.wzb.pojo20240928;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
private Integer code; // 响应码,1是响应成功,2是响应失败
private String message; // 响应信息,描述响应结果的字符串
private Object data; // 响应返回的数据
// 响应成功,但不返回数据的方法
public static Result success() {
return new Result(1, "success", null);
}
// 响应成功,并且返回数据的方法
public static Result success(Object data) {
return new Result(1,"success", data);
}
// 响应失败的方法
public static Result fail(String message) {
return new Result(0, message, null);
}
}
Controller
package com.wzb.controller20240928;
import com.wzb.pojo20240928.Dept;
import com.wzb.pojo20240928.Result;
import com.wzb.service20240928.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
// 此注解是控制层的注解
@RestController
// 此注解是为了简化请求路径,将重复的请求路径抽取到RequestMapping中
@RequestMapping("/depts")
public class DeptController {
@Autowired
private DeptService deptService;
// 增
@PostMapping
public Result insertDept(@RequestBody Dept dept) {
System.out.println("新增一个部门");
deptService.insertDept(dept);
return Result.success(dept);
}
// 删
// 前端会在请求路径上加入id,需要在@DeleteMapping中使用{id}来接收这个id,并且用@PathVariable注解将路径变量绑定到方法参数上
@DeleteMapping("/{id}")
public Result deleteDept(@PathVariable Integer id) {
System.out.println("删除一个部门");
deptService.deleteDept(id);
return Result.success();
}
// 改
@PutMapping
public Result updateDept(@RequestBody Dept dept) {
System.out.println("修改一个部门");
deptService.updateDept(dept);
return Result.success();
}
// 查
@GetMapping
public Result selectDept() {
System.out.println("所有部门信息");
List<Dept> deptList = deptService.selectDept();
return Result.success(deptList);
}
}
Service
package com.wzb.service20240928;
import com.wzb.mapper20240928.DeptMapper;
import com.wzb.pojo20240928.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
public interface DeptService {
// 增
public void insertDept(Dept dept);
// 删
public void deleteDept(Integer id);
// 改
public void updateDept(Dept dept);
// 查
public List<Dept> selectDept();
}
package com.wzb.service20240928;
import com.wzb.mapper20240928.DeptMapper;
import com.wzb.pojo20240928.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class DeptServiceImplement implements DeptService {
@Autowired
private DeptMapper deptMapper;
// 增
@Override
public void insertDept(Dept dept) {
// 前端发送的数据一般只有名字,id由数据库自动生成;后端需要补全create_time和update_time
dept.setCreateTime(LocalDateTime.now());
dept.setUpdateTime(LocalDateTime.now());
// 使用Mapper对象操作数据库
deptMapper.insertDept(dept);
}
// 删
@Override
public void deleteDept(Integer id) {
// 前端会发送id来指定要删除的部门,只需要直接调用deptMapper传递id即可
deptMapper.deleteDept(id);
}
// 改
public void updateDept(Dept dept) {
// 前端在修改部门时,会传递修改后的名字和选择修改的部门的id,后端需要补全的是update_time
dept.setUpdateTime(LocalDateTime.now());
deptMapper.updateDept(dept);
}
// 查
public List<Dept> selectDept() {
// 查询所有的部门信息,然后封装到List中返回
return deptMapper.selectDept();
}
}
Mapper
package com.wzb.mapper20240928;
import com.wzb.pojo20240928.Dept;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface DeptMapper {
// 增
@Insert("insert into dept (name, create_time, update_time) values(#{name}, #{createTime}, #{updateTime})")
public void insertDept(Dept dept);
// 删
@Delete("delete from dept where id=#{id}")
public void deleteDept(Integer id);
// 改
@Update("update dept set name=#{name}, update_time=#{updateTime} where id=#{id}")
public void updateDept(Dept dept);
// 查
@Select("select * from dept")
public List<Dept> selectDept();
}