当我们完成了员工管理的分页查询,那么接下来就要完成员工管理的批量删除、新增员工、根据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