持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情
前言
先前我们实现了获取用户查询接口,还实现了添加用户的插入接口,那么今天我们就来实现一下更新数据接口。
实践
更改数据的接口本质上就是数据库的改操作,update 表名 set 列1=值1,列2=值2,…… where 条件。
接下来我们就来实现一下这个 updateUser() 更新用户接口。
在 UserService 以及 UserMapper 中定义好接口方法。
void updateUser(UserBean userBean);
然后在我们的 UserMapper.xml 中实现更新的SQL语句。
<?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.li.test.mapper.UserMapper">
<update id="updateUser">
update user set name=#{name}, age=#{age}, gender=#{gender}, isDelete=#{isDelete}, password=#{password} where id=#{id}
</update>
</mapper>
注意,这里我们用的是 <update> ,然后用的参数,#{name} age=#{age} gender=#{gender} 就来自我们定义好UserBean参数。
接着,在 UserServiceImpl.java 中具体实现 updateUser() 方法。
@Override
public void updateUser(UserBean userBean) {
userMapper.updateUser(userBean);
}
最后,在我们的 UserController.java 中定义好更新数据方法对外的接口路径与参数。
/**
* 更改用户
* @param userBean
*/
@PostMapping("/users/update")
public void updateUser(UserBean userBean) {
System.out.println(userBean.toString());
userService.updateUser(userBean);
}
像之前 addUser() 方法中,我们有为参数添加 @RequestBody 的参数注解,但是这次updateUser()方法中,我们却没有添加,这是为什么呢?@RequestBody 又有什么作用呢?
简单的了解一下,是这样子的,像在我们使用postman工具来调试接口时,添加的body可以是 form-data 的格式,也可以是 raw-json 的格式,当我们为参数添加了@RequestBody注解时,我们就只可以使用 raw-json 的格式了,而不能使用form-data的格式了。
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
接下来就是编写测试用例,验证一下我们的代码是否正确。
@Test
void contextLoads() {
System.out.println("************* test UserController.updateUser() ***************");
UserBean ub = new UserBean(8, "Lisa", 88, 1, "888666", 0);
userService.updateUser(ub);
}
这里的意思呢就是将user表中id为8的那一行,数据更改为(”Lisa”, 88, “888666”, “0”)。
测试通过后,我们运行项目,然后通过postman来调试http://127.0.0.1:8080/users/update接口。
这里采用的是POST请求,Response code 返回 200,请求成功。
接着查看数据库,检查一下是否更新成功。
总结
今天我们实现了更新数据updateUser()接口,接下来就是学习一下删除操作,这样我们也就完成了一套数据库CRUD操作。