SprintBoot案例-增删改查

黑马程序员JavaWeb开发教程

文章目录

  • 一、准备工作
    • [1. 准备数据库表](#1. 准备数据库表)
      • [1.1 新建数据库mytlias](#1.1 新建数据库mytlias)
      • [1.2 新建部门表dept](#1.2 新建部门表dept)
      • [1.3 新建员工表emp](#1.3 新建员工表emp)
    • [2. 准备一个Springboot工程](#2. 准备一个Springboot工程)
      • [2.1 新建一个项目](#2.1 新建一个项目)
    • [3. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类](#3. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类)
      • [3.1 引入mybatis的配置信息](#3.1 引入mybatis的配置信息)
      • [3.2 准备对应的实体类](#3.2 准备对应的实体类)
    • [4. 准备对应的mapper、service、controller基础结构](#4. 准备对应的mapper、service、controller基础结构)
      • [4.1 创建结构](#4.1 创建结构)
      • [4.2 controller](#4.2 controller)
      • [4.3 service](#4.3 service)
      • [4.4 Mapper](#4.4 Mapper)
    • [5. 统一响应结果](#5. 统一响应结果)
  • 二、部门管理-查询
    • [1. 需求说明](#1. 需求说明)
    • [2. 接口文档](#2. 接口文档)
    • [3. 代码实现](#3. 代码实现)
      • [3.1 controller层](#3.1 controller层)
      • [3.2 service层](#3.2 service层)
      • [3.3 mapper层](#3.3 mapper层)
    • [4. postman测试](#4. postman测试)
  • 三、部门管理-删除
    • [1. 需求说明](#1. 需求说明)
    • [2. 接口文档](#2. 接口文档)
    • [3. 代码实现](#3. 代码实现)
      • [3.1 controller层](#3.1 controller层)
      • [3.2 service层](#3.2 service层)
      • [3.3 mapper层](#3.3 mapper层)
    • [4. postman测试](#4. postman测试)
  • 四、部门管理-新增
    • [1. 需求说明](#1. 需求说明)
    • [2. 接口文档](#2. 接口文档)
    • [3. 代码实现](#3. 代码实现)
      • [3.1 controller层](#3.1 controller层)
      • [3.2 service层](#3.2 service层)
      • [3.3 mapper层](#3.3 mapper层)
    • [4. postman测试](#4. postman测试)
  • 五、员工管理-分页查询
    • [1. 需求说明](#1. 需求说明)
    • [2. 接口文档](#2. 接口文档)
    • [3. 代码实现](#3. 代码实现)
      • [3.1 controller层](#3.1 controller层)
      • [3.2 service层](#3.2 service层)
      • [3.3 mapper层](#3.3 mapper层)
    • [4. postman测试](#4. postman测试)
  • 六、员工管理-删除员工
    • [1. 需求说明](#1. 需求说明)
    • [2. 接口文档](#2. 接口文档)
    • [3. 代码实现](#3. 代码实现)
      • [3.1 controller层](#3.1 controller层)
      • [3.2 service层](#3.2 service层)
      • [3.3 mapper层](#3.3 mapper层)
    • [4. postman测试](#4. postman测试)
  • 七、员工管理-新增员工
    • [1. 需求说明](#1. 需求说明)
    • [2. 接口文档](#2. 接口文档)
    • [3. 代码实现](#3. 代码实现)
      • [3.1 controller层](#3.1 controller层)
      • [3.2 service层](#3.2 service层)
      • [3.3 mapper层](#3.3 mapper层)
    • [4. postman测试](#4. postman测试)
  • 八、员工管理-修改
    • [1. 根据id 查询员工](#1. 根据id 查询员工)
      • [1.1 需求说明](#1.1 需求说明)
      • [1.2 接口文档](#1.2 接口文档)
      • [1.3 代码实现](#1.3 代码实现)
        • [1.3.1 controller层](#1.3.1 controller层)
        • [1.3.2 service层](#1.3.2 service层)
        • [1.3.3 mapper层](#1.3.3 mapper层)
      • [1.4 postman测试](#1.4 postman测试)
    • [2. 修改员工数据](#2. 修改员工数据)
      • [1.1 需求说明](#1.1 需求说明)
      • [1.2 接口文档](#1.2 接口文档)
      • [1.3 代码实现](#1.3 代码实现)
        • [1.3.1 controller层](#1.3.1 controller层)
        • [1.3.2 service层](#1.3.2 service层)
        • [1.3.3 mapper层](#1.3.3 mapper层)
      • [1.4 postman测试](#1.4 postman测试)

一、准备工作

1. 准备数据库表

1.1 新建数据库mytlias

# 新建数据库 mytlias
create database mytlias;
# 使用数据库 mytlias
use mytlias;

1.2 新建部门表dept

  1. 新建部门表

    -- 部门管理
    create table dept(
    id int unsigned primary key auto_increment comment '主键ID',
    name varchar(10) not null unique comment '部门名称',
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '修改时间'
    ) comment '部门表';

  2. 向部门表中插入数据

    insert into dept (id, name, create_time, update_time)
    values(1,'学工部',now(),now()),
    (2,'教研部',now(),now()),
    (3,'咨询部',now(),now()),
    (4,'就业部',now(),now()),
    (5,'人事部',now(),now());

1.3 新建员工表emp

  1. 新建员工表

    -- 员工管理(带约束)
    create table emp (
    id int unsigned primary key auto_increment comment 'ID',
    username varchar(20) not null unique comment '用户名',
    password varchar(32) default '123456' comment '密码',
    name varchar(10) not null comment '姓名',
    gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',
    image varchar(300) comment '图像',
    job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',
    entrydate date comment '入职时间',
    dept_id int unsigned comment '部门ID',
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '修改时间',
    foreign key (dept_id) references dept(id) # 部门表的主键id 是员工表的一个外键
    ) comment '员工表';

  2. 向员工表中插入数据

    INSERT INTO emp
    (id, username, password, name, gender, image, job, entrydate,dept_id, create_time, update_time)
    VALUES (1,'jinyong','123456','金庸',1,'1.jpg',4,'2000-01-01',2,now(),now()),
    (2,'zhangwuji','123456','张无忌',1,'2.jpg',2,'2015-01-01',2,now(),now()),
    (3,'yangxiao','123456','杨逍',1,'3.jpg',2,'2008-05-01',2,now(),now()),
    (4,'weiyixiao','123456','韦一笑',1,'4.jpg',2,'2007-01-01',2,now(),now()),
    (5,'changyuchun','123456','常遇春',1,'5.jpg',2,'2012-12-05',2,now(),now()),
    (6,'xiaozhao','123456','小昭',2,'6.jpg',3,'2013-09-05',1,now(),now()),
    (7,'jixiaofu','123456','纪晓芙',2,'7.jpg',1,'2005-08-01',1,now(),now()),
    (8,'zhouzhiruo','123456','周芷若',2,'8.jpg',1,'2014-11-09',1,now(),now()),
    (9,'dingminjun','123456','丁敏君',2,'9.jpg',1,'2011-03-11',1,now(),now()),
    (10,'zhaomin','123456','赵敏',2,'10.jpg',1,'2013-09-05',1,now(),now()),
    (11,'luzhangke','123456','鹿杖客',1,'11.jpg',5,'2007-02-01',3,now(),now()),
    (12,'hebiweng','123456','鹤笔翁',1,'12.jpg',5,'2008-08-18',3,now(),now()),
    (13,'fangdongbai','123456','方东白',1,'13.jpg',5,'2012-11-01',3,now(),now()),
    (14,'zhangsanfeng','123456','张三丰',1,'14.jpg',2,'2002-08-01',2,now(),now()),
    (15,'yulianzhou','123456','俞莲舟',1,'15.jpg',2,'2011-05-01',2,now(),now()),
    (16,'songyuanqiao','123456','宋远桥',1,'16.jpg',2,'2007-01-01',2,now(),now()),
    (17,'chenyouliang','123456','陈友谅',1,'17.jpg',NULL,'2015-03-21',NULL,now(),now());

2. 准备一个Springboot工程

2.1 新建一个项目


  • 引入对应的起步依赖(web、mybatis、mysql驱动、lombok)

3. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类

3.1 引入mybatis的配置信息

  • 在application.properties中添加以下代码

    MyBatis配置信息

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

    改成你自己要连接的数据库的名字(mytlias)

    spring.datasource.url=jdbc:mysql://localhost:3306/mytlias

    自己数据库用户名(root)

    spring.datasource.username=root

    自己数据库密码(123456)

    spring.datasource.password=123456

    #开启驼峰命名
    mybatis.configuration.map-underscore-to-camel-case=true

3.2 准备对应的实体类

  • 创建一个文件夹pojo,并在其下创建两个类Dept、Emp
  1. 实体类Dept

    package com.itheima.mytlias.pojo;

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

    import java.time.LocalDateTime;

    @Data//生成getter、setter、tostring等
    @AllArgsConstructor//全参构造函数
    @NoArgsConstructor//无参构造函数
    public class Dept {
    private Integer id; // 部门id
    private String name; // 部门名称
    private LocalDateTime createTime; // 创建时间
    private LocalDateTime updateTime; // 更新时间

    }

  2. 实体类Emp

    package com.itheima.mytlias.pojo;

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

    import java.time.LocalDate;
    import java.time.LocalDateTime;

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Emp {
    private Integer id;//用户id
    private String username;//用户名
    private String password;//用户密码
    private String name;//用户姓名
    private Short gender;//用户新别
    private String image;//图像地址
    private Short job;//职位
    private LocalDate entrydate;//日志日期
    private Integer deptId;//部门id
    private LocalDateTime createTime;//创建时间
    private LocalDateTime updateTime;//更新时间
    }

4. 准备对应的mapper、service、controller基础结构

4.1 创建结构

4.2 controller

  1. DeptController

    package com.itheima.mytlias.controller;

    import org.springframework.web.bind.annotation.RestController;

    @RestController
    public class DeptController {
    }

  2. EmpController

    package com.itheima.mytlias.controller;

    import org.springframework.web.bind.annotation.RestController;

    @RestController
    public class EmpController {
    }

4.3 service

  1. deptService

    package com.itheima.mytlias.service;

    public interface DeptService {
    }

  2. EmpService

    package com.itheima.mytlias.service;

    public interface EmpService {
    }

  3. DeptServiceImpl

    package com.itheima.mytlias.service.impl;

    import com.itheima.mytlias.service.DeptService;
    import org.springframework.stereotype.Service;

    @Service
    public class DeptServiceImpl implements DeptService {
    }

  4. EmpServiceImpl

    package com.itheima.mytlias.service.impl;

    import com.itheima.mytlias.service.EmpService;
    import org.springframework.stereotype.Service;

    @Service
    public class EmpServiceImpl implements EmpService {
    }

4.4 Mapper

  1. DeptMapper

    package com.itheima.mytlias.mapper;

    import org.apache.ibatis.annotations.Mapper;

    @Mapper
    public interfaceDeptMapper {
    }

  2. EmpMapper

    package com.itheima.mytlias.mapper;

    import org.apache.ibatis.annotations.Mapper;

    @Mapper
    public interfaceEmpMapper {
    }

5. 统一响应结果

  • 为了统一响应结果,需要在pojo包下创建Result类

    package com.itheima.mytlias.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);
      }
    

    }

二、部门管理-查询

1. 需求说明

2. 接口文档

3. 代码实现

3.1 controller层

package com.itheima.mytlias.controller;

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

import java.awt.*;
import java.util.List;


@Slf4j//打印日志使用
@RestController
@RequestMapping("/depts")//本例下所有的请求都会以/dept开头,所以可以使用这个注解,提取出来
public class DeptController {

    //注入
    @Autowired
    private DeptService deptService;
    /**
     * 查询所有部门数据
     * 请求方式为 Get
     * 请求路径为/dept
     * 无参数
     * 返回统一响应结果
     * @return
     */
    @GetMapping
    public Result list(){
       //打印日志
        log.info("查询所有部门数据");
       //调用service,查询所有部门数据
        List<Dept> deptList = deptService.list();
        //返回结果
        return Result.success(deptList);
    }
}

3.2 service层

  1. service

    package com.itheima.mytlias.service;

    import com.itheima.mytlias.pojo.Dept;

    import java.util.List;

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

  2. impl

    package com.itheima.mytlias.service.impl;

    import com.itheima.mytlias.mapper.DeptMapper;
    import com.itheima.mytlias.pojo.Dept;
    import com.itheima.mytlias.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;

     /**
      * 查询所有部门数据
      * @return
      */
     @Override
     public List<Dept> list() {
         //调用mapper查询所有部门数据
         List<Dept> deptList=deptMapper.list();
         return deptList;
     }
    

    }

3.3 mapper层

package com.itheima.mytlias.mapper;

import com.itheima.mytlias.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")
    public List<Dept> list();
}

4. postman测试

三、部门管理-删除

1. 需求说明

  • 也就是根据部门id删除部门

2. 接口文档

3. 代码实现

3.1 controller层

  • 从这里向后,只给出新增的代码

    /**
    * 根据部门id删除部门
    * 请求方式为 Delete
    * 请求路径为/depts/{id}
    * 参数为部门id,路径参数,需要加上注解 @PathVariable
    * 返回统一响应结果
    * @param id
    * @return
    */
    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable Integer id){
    //打印日志
    log.info("根据部门id删除部门");
    //调用service,根据部门id删除部门
    deptService.deleteById(id);
    //返回结果
    return Result.success();
    }

3.2 service层

  1. service

    /**
    * 根据部门id删除部门
    * @param id
    */
    void deleteById(Integer id);

  2. impl

    /**
    * 根据部门id删除部门
    * @param id
    */
    @Override
    public void deleteById(Integer id) {
    //调用mapper,根据部门id删除部门
    deptMapper.deleteById(id);
    }

3.3 mapper层

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

4. postman测试

四、部门管理-新增

1. 需求说明

  • 根据部门名称新增部门

2. 接口文档

3. 代码实现

3.1 controller层

/**
     * 根据部门名称添加部门
     * 请求方式为 POST
     * 请求路径为/depts
     * 参数为JSON格式数据,因此需要加上注解 @RequestBody
     * 返回统一响应结果
     * @param dept
     * @return
     */
    @PostMapping
    public Result insertByName(@RequestBody Dept dept){
        //打印日志
        log.info("根据部门名称添加部门");
        //调用service,根据部门名称添加部门
        deptService.insertByName(dept);
        //返回结果
        return Result.success();

    }

3.2 service层

  1. service

    /**
    * 根据部门名称添加部门
    * @param dept
    */
    void insertByName(Dept dept);

  2. impl

    /**
    * 根据部门名称添加部门
    * @param dept
    */
    @Override
    public void insertByName(Dept dept) {
    //修改基础信息
    dept.setCreateTime(LocalDateTime.now());
    dept.setUpdateTime(LocalDateTime.now());
    //调用mapper,根据部门名称添加部门
    deptMapper.insertByName(dept);
    }

3.3 mapper层

/**
     * 根据部门名称添加部门
     * @param dept
     */
    @Insert("insert into dept (id, name, create_time, update_time) values (#{id},#{name},#{createTime},#{updateTime})")
    void insertByName(Dept dept);

4. postman测试

{
    "name":"人事部"
}

五、员工管理-分页查询

1. 需求说明

2. 接口文档




3. 代码实现

3.1 controller层

package com.itheima.mytlias.controller;

import com.itheima.mytlias.pojo.PageBean;
import com.itheima.mytlias.pojo.Result;
import com.itheima.mytlias.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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDate;

@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {
    @Autowired
    private EmpService empService;

    @GetMapping
    //@RequestParam:为了给形参指定默认值
    //@DateTimeFormat:日期时间类型的参数,需要使用该注解指定格式
    public Result page(String name, Short gender,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end,
                       @RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "2") Integer pageSize) {
        //打印日志
        log.info("参数 {},{},{},{},{},{}", name, gender, begin, end, page, pageSize);
        //调用service
        PageBean pageBean = empService.page(name, gender, begin, end, page, pageSize);
        //返回结果
        return Result.success(pageBean);

    }
}

3.2 service层

  1. service

    package com.itheima.mytlias.service;

    import com.itheima.mytlias.pojo.PageBean;

    import java.time.LocalDate;

    public interface EmpService {
    /**
    * 分页查询
    *
    * @return
    */
    PageBean page(String name, Short gender, LocalDate begin, LocalDate end, Integer page, Integer pageSize);
    }

  2. impl

    package com.itheima.mytlias.service.impl;

    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageHelper;
    import com.itheima.mytlias.mapper.EmpMapper;
    import com.itheima.mytlias.pojo.Emp;
    import com.itheima.mytlias.pojo.PageBean;
    import com.itheima.mytlias.service.EmpService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    import java.time.LocalDate;
    import java.util.List;

    @Service
    public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;

     /**
      * 分页查询
      *
      * @return
      */
     @Override
     public PageBean page(String name, Short gender, LocalDate begin, LocalDate end, Integer page, Integer pageSize) {
    
         //使用pagehelper指定查询页码,和每页查询数据
         PageHelper.startPage(page, pageSize);
         //执行查询
         List<Emp> empList = empMapper.list(name, gender, begin, end);
         Page<Emp> p = (Page<Emp>) empList;//强制转换成Page类型
         Long count = p.getTotal();
         List<Emp> result = p.getResult();
         //封装为 PageBean
         PageBean pageBean = new PageBean(count, result);
         return pageBean;
     }
    

    }

3.3 mapper层

  1. mapper

    package com.itheima.mytlias.mapper;

    import com.itheima.mytlias.pojo.Emp;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;
    import org.springframework.web.bind.annotation.PathVariable;

    import java.time.LocalDate;
    import java.util.List;

    @Mapper
    public interface EmpMapper {
    /**
    * 使用pageHelper的话,只需要定义一个简单的查询就可以
    *
    * @return
    */
    public List<Emp> list(@Param("name") String name, @Param("gender") Short gender, @Param("begin") LocalDate begin, @Param("end") LocalDate end);
    }

  2. EmpMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.mytlias.mapper.EmpMapper">
     <!--    带条件的分页查询-动态查询-->
     <!--    id:与方法名一致
             resultType:返回单条记录的全类名-->
     <select id="list" resultType="com.itheima.mytlias.pojo.Emp">
         select * from emp
         <where>
             <if test="name!=null">name like concat('%',#{name},'%')</if>
             <if test="gender!=null">and gender=#{gender}</if>
             <if test="begin!=null and end!=null">and entrydate between #{begin} and #{end}</if>
         </where>
         order by update_time desc
     </select>
    
    </mapper>

4. postman测试

http://localhost:8080/emps?name=张&gender=1&begin=2000-01-01&end=2010-01-01

六、员工管理-删除员工

1. 需求说明

2. 接口文档

3. 代码实现

3.1 controller层

/**
     * 根据员工id,删除员工
     * 请求方式为 DELETE
     * 请求路径为/emps
     * 返回统一响应结果
     * 参数:
     * @param ids  @PathVariable 路径参数需要加这个注解
     * @return
     */
    @DeleteMapping("/{ids}")
    public Result DeleteById(@PathVariable List<Integer> ids){
        //打印日志
        log.info("参数:{}",ids);
        //调用service
        empService.deleteById(ids);
        //返回结果
        return Result.success();
    }

3.2 service层

  1. service

    /**
    * 根据员工 id删除员工
    * @param ids
    */
    void deleteById(List<Integer> ids);

  2. impl

    /**
    * 根据员工 id删除员工
    * @param ids
    */
    @Override
    public void deleteById(List<Integer> ids) {
    //调用mapper 删除员工
    empMapper.deleteById(ids);

     }
    

3.3 mapper层

  1. EmpMapper

    /**
    * 根据id删除员工
    * @param ids
    */
    void deleteById(@Param("ids") List<Integer> ids);

  2. EmpMApper.xml

     <!--    collection:要遍历的数组
             close:结束之后的SQL片段
             open:遍历之前的左侧
             separator:以什么为分割
             item遍历后得到的单个元素-->
     <delete id="deleteById">
         delete from emp where id in
         <foreach collection="ids" close=")" open="(" separator="," item="id">
             #{id}
         </foreach>
     </delete>
    

4. postman测试

七、员工管理-新增员工

1. 需求说明


2. 接口文档




3. 代码实现

3.1 controller层

/**
     * 新增员工
     * 请求方式为 POST
     * 请求路径为/emps
     * 返回统一响应结果
     * 参数:
     * @param emp @RequestBody 如果参数是JSON格式的数据,需要加这个注解
     * @return
     */
    @PostMapping
    public Result insert(@RequestBody Emp emp){
        //打印日志
        log.info("新增员工");
        //调用servicce
        empService.insert(emp);
        //返回结果
        return Result.success();
    }

3.2 service层

  1. service

    /**
    * 新增员工
    */
    void insert(Emp emp);

  2. impl

    /**
    * 新增员工
    */
    @Override
    public void insert(Emp emp) {
    //处理基本数据
    emp.setCreateTime(LocalDateTime.now());
    emp.setUpdateTime(LocalDateTime.now());
    //调用mapper
    empMapper.insert(emp);
    }

3.3 mapper层

 /**
     * 新增员工
     */
    @Insert("insert into emp(id,username,password,name,gender,image,dept_id,entrydate,job,create_time,update_time) values(null,#{username},#{password},#{name},#{gender},#{image},#{deptId},#{entrydate},#{job},#{createTime},#{updateTime})")
    void insert(Emp emp);

4. postman测试

八、员工管理-修改

-- 修改可以分为两个步骤:根据id查询员工;修改员工信息

1. 根据id 查询员工

1.1 需求说明

1.2 接口文档





1.3 代码实现

1.3.1 controller层
/**
     * 该接口用于根据主键ID查询员工的信息
     * 请求方式为 GET
     * 请求路径为/emps/{id}
     * 返回统一响应结果-Emp
     * 参数:
     *
     * @param id @PathVariable 路径参数,添加此注解
     * @return
     */
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        //打印日志
        log.info("参数 {}", id);
        //调用service,根据主键ID查询员工的信息
        Emp emp = empService.getById(id);
        //返回结果
        return Result.success(emp);
    }
1.3.2 service层
  1. service

    /**
    * 根据主键ID查询员工的信息
    * @param id
    * @return
    */
    Emp getById(Integer id);

  2. impl

    /**
    * 根据主键ID查询员工的信息
    * @param id
    * @return
    */
    @Override
    public Emp getById(Integer id) {
    //调用mapper,根据主键ID查询员工的信息
    Emp emp=empMapper.getById(id);
    return emp;
    }

1.3.3 mapper层
/**
     * 根据主键ID查询员工的信息
     * @return
     */
    @Select("select * from emp where id=#{id}")
    Emp getById(@Param("id") Integer id);

1.4 postman测试

2. 修改员工数据

1.1 需求说明

  • 同上

1.2 接口文档




1.3 代码实现

1.3.1 controller层
/**
     * 该接口用于修改员工的数据信息
     * 请求方式为 PUT
     * 请求路径为/emps
     * 返回统一响应结果
     * 参数:
     * @param emp  @RequestBody 若参数是JSON格式的数据的话,需要加上该注解
     * @return
     */
    @PutMapping
    public Result update(@RequestBody Emp emp){
        //打印日志
        log.info("修改员工的数据信息");
        //调用service
        empService.update(emp);
        //返回结果
        return Result.success();
    }
1.3.2 service层
  1. service

    /**
    * 修改员工的数据信息
    * @param emp
    */
    void update(Emp emp);

  2. impl

    /**
    * 修改员工的数据信息
    * @param emp
    */
    @Override
    public void update(Emp emp) {
    //设置基本值
    emp.setUpdateTime(LocalDateTime.now());
    //调用mapper,修改员工的数据信息
    empMapper.update(emp);
    }

1.3.3 mapper层
  1. EmpMapper

    /**
    * 修改员工的数据信息
    */
    void update(Emp emp);

  2. EmpMapper.xml

     <update id="update">
         update emp
         <set>
             <if test="username !=null and username!=' '">username =#{username},</if>
             <if test="name !=null and name!=' '">name=#{name},</if>
             <if test="gender !=null and gender!=' '">gender=#{gender},</if>
             <if test="image !=null and image!=' '">image=#{image},</if>
             <if test="deptId !=null and deptId!=' '">dept_id=#{deptId},</if>
             <if test="entrydate !=null and entrydate!=' '">entrydate=#{entrydate},</if>
             <if test="job !=null and job!=' '">job=#{job}</if>
         </set>
         where id=#{id}
     </update>
    

1.4 postman测试

{
    "id":1,
    "username":"jinyongnew",
    "name":"金庸",
    "gender":1,
    "image":"1.jpg",
    "job":4,
    "entrydate":"2000-01-01",
    "deptId":2
}
相关推荐
派可数据BI可视化2 分钟前
连锁餐饮行业数据可视化分析方案
大数据·数据库·数据仓库·数据分析·商业智能bi
dbcat官方4 分钟前
1.微服务灰度发布(方案设计)
java·数据库·分布式·微服务·中间件·架构
雪球不会消失了7 分钟前
SpringMVC中的拦截器
java·开发语言·前端
青年有志12 分钟前
深入浅出 MyBatis | CRUD 操作、配置解析
数据库·tomcat·mybatis
羊村懒哥14 分钟前
tomcat-安装笔记(包含虚拟主机配置)
java·笔记·tomcat
数据的世界0115 分钟前
SQL创建和操纵表
数据库·sql
00Allen0017 分钟前
mybatis/mybatisplus
java·spring·mybatis
Echo flower19 分钟前
mybatis-plus自动填充时间的配置类实现
java·数据库·mybatis
李匠202420 分钟前
大数据学习之Redis 缓存数据库二,Scala分布式语言一
大数据·数据库·缓存
秋夫人35 分钟前
IntelliJ IDEA 中 Editor > General > Appearance 设置:编辑器的视觉外观和行为
java·编辑器·intellij-idea