首页 > 编程语言 >Java后端tlias员工部门管理-员工管理下-MyBatis-4

Java后端tlias员工部门管理-员工管理下-MyBatis-4

时间:2024-07-10 14:55:41浏览次数:11  
标签:Java tlias void ids 员工 emp id Emp

当我们完成了员工管理的分页查询,那么接下来就要完成员工管理的批量删除、新增员工、根据ID查询员工、根据ID修改员工功能。下图是最终完成的示例


 批量删除

批量删除也是查询语句,所以我们在EmpMapper只需要编写方法,而不需要在上面编写复杂的查询语句,而是在EmpMapper.xml编写复杂的sql语句。于是

EmpMapper.xml里面的SQL语句是

<delete id="delete">
    delete from emp where id in
    <foreach collection="ids" item="id" separator="," open="(" close=")">
        #{id}
    </foreach>
</delete>

EmpMapper的代码

参数是根据许多的id的值组成的列表,返回值是无类型的所以是void

/*
 * 批量删除员工
 * */
void delete(List<Integer> ids);

然后是Service层

EmpService

void delete(List<Integer> ids);

对的,你没看错,这两层的代码是一样的 ,等会写实现类就不一样了

EmpServiceImpl

@Override
public void delete(List<Integer> ids) {
    empMapper.delete(ids);
}

最后Controller层

EmpController的代码

发起的响应此时就是@DeleteMapping,路径可以认为他是{ids}

注意了,路径里大括号包的内容必须和参数名字保持一致!

@DeleteMapping("/{ids}")
public Result delete(@PathVariable List<Integer> ids){
    log.info("批量删除操作,ids={}",ids);
    empService.delete(ids);
    return Result.success();
}v

新增员工

EmpMapper的代码

由于这是简单的sql语句,可以直接在上面编写Insert的SQL语句


@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 insert(Emp emp);

然后是Service层

EmpService

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

EmpServiceImpl

@Override
public void save(Emp emp) {
    emp.setCreateTime(LocalDateTime.now());
    emp.setUpdateTime(LocalDateTime.now());
    empMapper.insert(emp);
}

为什么要有这个语句emp.setCreateTime(LocalDateTime.now()); 因为你新增一个员工,那么这个员工的创建时间和修改时间就是当下的时间,所以要给他们设置LocalDateTime.now()

最后Controller层

EmpController的代码

/*
 * 新增员工
 * */
@PostMapping
public Result save(@RequestBody Emp emp){
    log.info("新增员工为:{}",emp);
    empService.save(emp);
    return Result.success();
}

根据ID查询员工

EmpMapper的代码

/*
 * 根据ID查询员工
 * */
@Select("select * from emp where id = #{id}")
Emp getById(Integer id);

注意:返回值是Emp这个实体类的对象,为什么?你查到数据不返回给人家,人家怎么知道 

然后是Service层

EmpService

/*
 * 根据ID查询员工
 * */
Emp getById(Integer id);

EmpServiceImpl

@Override
public Emp getById(Integer id) {
    return empMapper.getById(id);
}

最后Controller层

EmpController的代码

/*
 * 根据ID查询员工
 * */
@GetMapping("/{id}")
public Result getById(@PathVariable Integer id){
    log.info("根据id={}查询员工",id);
    Emp emp = empService.getById(id);
    return Result.success(emp);
}

根据ID修改员工

sql语句较为复杂,所以要在EmpMapper.xml编写复杂SQL语句

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

EmpMapper的代码

/*
* 修改员工
* */
void update(Emp emp);

然后是Service层

EmpService

/*
 * 修改员工
 * */
void update(Emp emp);

EmpServiceImpl

@Override
public void update(Emp emp) {
    emp.setUpdateTime(LocalDateTime.now());
    empMapper.update(emp);
}

最后Controller层

EmpController的代码

/*
 * 根据ID修改员工
 * */
@PutMapping
public Result update(@RequestBody Emp emp){
    log.info("修改数据emp={}",emp);
    empService.update(emp);
    return Result.success();
}

测试

最终我们对每个查询、删除、修改进行接口测试

我们先启动整个程序看看

如图,按住右键点击运行 

出现以上界面加载完成之后就可以在Postman进行编写接口测试了 

1.批量删除员工测试

点击发送,响应是成功的success,但是最终我们要去看数据库里面有没有删除

 如图,在还没点刷新按钮之前,id为5和10的还在,刷新之后就没有了,则证明删除功能没有问题

2.新增员工测试

新增员工要传入emp的json格式的对象,我直接给你们

{
  "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-03-07-37-38222.jpg",
  "username": "linpingzhi",
  "name": "林平之",
  "gender": 1,
  "job": 1,
  "entrydate": "2022-09-18",
  "deptId": 1
}

点击发送,响应成功

 去数据库查看,刷新一下

日期是最新的,表明我测试的没问题,那么新增员工这个功能呢就没问题了 

3.根据ID查询员工测试

如图,我正确响应回来了数据。

如果没有,可以先看看数据库里面是否有这个id 

4.根据ID修改员工测试

修改员工是需要Body形式的JSON参数的

{
    "id":24,
    "name":"刘德华",
    "username":"liudehua"
}

如下图,我点击发送之后,响应是成功的 

这时候我们去数据库查看,下图是还能没刷新

 刷新之后名字确实变化了,修改时间也自动变化了。


那么至此员工管理正式全部结束 。

后面的一篇文章我会讲解部门管理与员工管理之间的联系,然后进行前后端联调与阿里云文件上传OSS,还有yml文件配置,大家敬请期待!点个关注和收藏不迷路!

标签:Java,tlias,void,ids,员工,emp,id,Emp
From: https://blog.csdn.net/yf15996280470/article/details/140285979

相关文章

  • Java后端tlias员工部门管理-前后端联调-阿里云OSS-5
    当完成了员工和部门管理的两大模块的所有基本功能,那么我们接下来就先进行yml文件配置。Yml文件配置为什么要换我们需要把这个application.properties配置文件改成application.yml,因为对比了其他的配置文件的格式,有诸如一下优点中文变成???那么我们进入application.proper......
  • 如何应对团队中的刺头员工
    聊一个很有意思的话题:团队里有刺头员工,该如何应对?事情的起因是这样的:技术交流群一位同学私聊我,说刚接管测试团队负责整体的质量保障工作,但是团队里有个别员工不配合,主要表现在分配的任务不接受,或者迭代的需求估时太长不合理。如果你是测试团队的负责人,你会如何解决这个问题呢?......
  • 面试官:Java对象引用都有哪些类型?
    哈喽,大家好......
  • Java计算机毕业设计的电影院管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着文化娱乐产业的蓬勃发展,电影院作为人们休闲娱乐的重要场所,其管理效率和用户体验成为影响行业竞争力的关键因素。传统的电影院管理方式往往依赖于......
  • JavaSE语法 | 初识Java!!!
    初识Java一、Java开发环境二、初步认识Java的main方法2.1main方法的实现2.2运行Java程序三、注释四、标识符五、关键字一、Java开发环境IDEA版本:IntelliJIDEACommunityEdition2022.3.3JDK17Windows11二、初步认识Java的main方法2.1main方法的实现main......
  • Java虚拟机(JVM)修复
    一、确定问题原因首先,需要明确Java虚拟机出现问题的具体原因。这可以通过以下方式进行:查看错误日志:JVM和Java应用程序会生成日志文件,这些文件记录了运行时的详细信息,包括错误信息和系统警告。通过查看这些日志,可以获得导致JVM故障的线索。使用调试工具:如jstack、jmap、jconsole......
  • JavaSE学习笔记第二弹——对象和多态(上)
    目录面向对象基础面向对象程序设计的定义类的基本结构成员变量成员方法方法定义与使用设计练习方法重载构造方法静态变量和静态方法String和StringBuilder基本含义区别总结今天我们继续来学习JavaSE,扩展和Java相关的知识,与大家共勉。今天的主题是对象和多态,希......
  • SpringBoot 整合 MyBatis 时报java.lang.IllegalArgumentException: Unable to instan
    配置   报错信息: 原因:版本不兼容,降低 mybatis 版本 问题解决: ......
  • 软件设计12丨编程范式:明明写的是Java,为什么被人说成了C代码?
    在上一个小模块,我给你讲了程序设计语言,帮助你重新审视一下自己最熟悉的日常工具。但是,使用程序设计语言是每个程序员都能做到的,可写出的程序却是千差万别的。这一讲,我们就来看看这些差异到底是怎样造成的。在开始之前,我先给你讲一个小故事。在一次代码评审中,小李兴致勃勃地......
  • java导出PDF文件
    我们需要将生成的PDF文件直接导出到浏览器而不是保存到本地,需要对HttpServletResponse进行配置,将PDF写入到响应流中。以下是可以将PDF导出到浏览器进行下载:我们首先先编写PDF工具类:packagecom.scenic.util;importcom.itextpdf.text.*;importcom.itextpdf.text.pdf.*;im......