案例-准备工作
需求说明

环境搭建

开发规范-Restful
开发流程

案例-部门管理
查询部门
前后端联调

小结

删除部门



添加部门



@RequestMapping

代码实现
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.apache.ibatis.annotations.Delete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 部门管理Controller
*/
@Slf4j
@RestController
public class DeptController {
@Autowired
private DeptService deptService;
//查询部门
@GetMapping("/depts")
public Result list(){
log.info("查询全部部门数据");
List<Dept> deptList = deptService.list();
return Result.success(deptList);
}
//根据id删除部门
@DeleteMapping("/depts/{id}")
public Result deleteById(@PathVariable Integer id){
log.info("根据id删除部门"+id);
deptService.delete(id);
return Result.success();
}
//新增部门
@PostMapping("/depts")
public Result add(@RequestBody Dept dept){
log.info("新增部门"+dept);
deptService.add(dept);
return Result.success();
}
//修改部门
@GetMapping("/depts/{id}")
public Result getByID(@PathVariable Integer id) {
log.info("获取部门ID:{}",id);
Dept dept = deptService.getByID(id);
return Result.success(dept);
}
@PutMapping("/depts")
public Result update(@RequestBody Dept dept) {
log.info("修改部门:{}",dept);
deptService.update(dept);
return Result.success();
}
}
service包
DeptService
java
package com.itheima.service;
import com.itheima.pojo.Dept;
import java.util.List;
/**
* 部门管理
*/
public interface DeptService {
//查询部门
List<Dept> list();
//根据id删除部门
void delete(Integer id);
//添加部门
void add(Dept dept);
//修改部门
Dept getByID(Integer id);
void update(Dept dept);
}
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.time.LocalDateTime;
import java.util.List;
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
private DeptMapper deptMapper;
//查询部门
@Override
public List<Dept> list() {
return deptMapper.list();
}
//根据id删除部门
@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 update(Dept dept) {
dept.setUpdateTime(LocalDateTime.now());
deptMapper.update(dept);
}
}
mapper包
DeptMapper
java
package com.itheima.mapper;
import com.itheima.pojo.Dept;
import org.apache.ibatis.annotations.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* 部门管理
*/
@Mapper
public interface DeptMapper {
//查询部门
@Select("select * from dept")
List<Dept> list();
//删除部门
@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 * 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);
}
pojo包
Dept
java
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* 部门实体类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private Integer id; //ID
private String name; //部门名称
private LocalDateTime createTime; //创建时间
private LocalDateTime updateTime; //修改时间
}
Result
java
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
private Integer code;//响应码,1 代表成功; 0 代表失败
private String msg; //响应信息 描述字符串
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 error(String msg){
return new Result(0,msg,null);
}
}
案例-员工管理
分页查询
分析


实现

小结

分页插件ParamHelper



条件分页查询
实现


小结

删除员工
思路


实现


新增员工
思路

实现


代码实现
controller包
EmpController
java
package com.itheima.controller;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.List;
/**
* 员工管理Controller
*/
@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {
@Autowired
private EmpService empService;
@GetMapping
public Result page(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer pageSize,
String name, short gender,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end
) {
log.info("分页查询,参数:{},{},{},{},{},{}",page,pageSize,name,gender,begin,end);
//调用service分页查询
PageBean pageBean = empService.page(page,pageSize,name,gender,begin,end);
return Result.success(pageBean);
}
@DeleteMapping("/{ids}")
public Result delete(@PathVariable List<Integer> ids) {
log.info("批量删除员工,ids:{}",ids);
empService.delete(ids);
return Result.success();
}
@PostMapping
public Result save(@RequestBody Emp emp) {
log.info("新增员工:{}",emp);
empService.save(emp);
return Result.success();
}
}
service包
EmpService
java
package com.itheima.service;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import java.time.LocalDate;
import java.util.List;
/**
* 员工管理
*/
public interface EmpService {
PageBean page(Integer page, Integer pageSize, String name, short gender, LocalDate begin, LocalDate end);
//批量删除
void delete(List<Integer> ids);
//新增员工
void save(Emp emp);
}
EmpServiceImpl
java
package com.itheima.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
@Override
public PageBean page(Integer page, Integer pageSize,String name, short gender,LocalDate begin,LocalDate end) {
//1.设置分页参数
PageHelper.startPage(page, pageSize);
//2.执行查询
List<Emp> empList = empMapper.list(name,gender,begin,end);
Page<Emp> p = (Page<Emp>) empList;
//3.封装PageBean对象
PageBean pageBean = new PageBean(p.getTotal(),p.getResult());
return pageBean;
}
//批量删除
@Override
public void delete(List<Integer> ids) {
empMapper.delete(ids);
}
@Override
public void save(Emp emp) {
emp.setCreateTime(LocalDateTime.now());
emp.setUpdateTime(LocalDateTime.now());
empMapper.save(emp);
}
}
mapper包
EmpMapper
java
package com.itheima.mapper;
import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDate;
import java.util.List;
/**
* 员工管理
*/
@Mapper
public interface EmpMapper {
//查询总记录数
/* @Select("select count(*) from emp")
public Long count();*/
//分页查询,获取列表数据
/* @Select("select * from emp limit #{start},#{limit}")
public List<Emp> page(Integer start, Integer limit);*/
//@Select("select * from emp")
public List<Emp> list(String name, short gender, LocalDate begin, LocalDate end);
//批量删除
void delete(List<Integer> ids);
//新增员工
@Insert("insert into emp(username,name,gender,image,job,entrydate,dept_id,create_time,update_time) " +
"values(#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")
void save(Emp emp);
}
pojo包
Emp
java
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* 员工实体类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
private Integer id; //ID
private String username; //用户名
private String password; //密码
private String name; //姓名
private Short gender; //性别 , 1 男, 2 女
private String image; //图像url
private Short job; //职位 , 1 班主任 , 2 讲师 , 3 学工主管 , 4 教研主管 , 5 咨询师
private LocalDate entrydate; //入职日期
private Integer deptId; //部门ID
private LocalDateTime createTime; //创建时间
private LocalDateTime updateTime; //修改时间
}
PageBean
java
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/*
* 分页查询结果封装类
* */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
private long total;//总记录数
private List rows;//数据列表
}
Result
java
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
private Integer code;//响应码,1 代表成功; 0 代表失败
private String msg; //响应信息 描述字符串
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 error(String msg){
return new Result(0,msg,null);
}
}