前端同学学习SpringBoot的第 6 天

121 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

前言

先前我们以查询为主题,实现了一次性获取到全部用户数据,以及根据指定用户名来查询用户信息,还有在UserBean没有age字段的前提下根据指定用户名来查询到该用户的年龄,进一步熟悉了利用SpringBoot框架来开发API。

那么今天我们就不做查询,而是做增加用户的操作,例如:开发一个接口,用于增加新用户。

实践

增加新用户本质上其实就是为服务器增加一行,所以也就是使用 insert 语句来操作,具体根据我们定义的数据库表结构,如我们想在 user 表中插入一行,那么就是执行insert into user (id, name, age, gender, password, isDelete)来插入。

接下来,我们就来具体看看是如何实现的。

第一步:在 UserService 中定义好方法。

void addUser(UserBean userBean);

同时在 UserMapper 中也定义好方法。

void addUser(UserBean userBean);

然后在我们的UserMapper.xml 中实现具体的插入SQL语句。

<insert id="addUser" parameterType="com.li.test.bean.UserBean">
    insert into user (id, name, age, gender, password, isDelete)
    value (#{id}, #{name}, #{age}, #{gender}, #{password}, #{isDelete})
</insert>

接着,具体实现 UserServiceImpl.java 中的 addUser() 方法。

@Override
public void addUser(UserBean userBean) {
    userMapper.addUser(userBean);
}

接着,在我们的 UserController.java 中定义好对外的接口路径与方法。

/**
 * 添加新用户
 * @param userBean
 */
@PostMapping("/users/new_user")
public void addUser(@RequestBody UserBean userBean) {
    userService.addUser(userBean);
}

注意,与查询不同的是,这里我们使用的是@PostMapping方法,可以先简单的理解为我们查询是使用Get,而添加操作是使用Post,具体可以进一步学习一下GET方法与POST方法的区别,这边就不展开了。

ok, 到这,所有代码就都编写完毕了,接着就是测试一下有没有错误了。

我们在TestApplicationTests编写测试用例,添加一个新的用户,如下所示。

@Test
void contextLoads() {
    System.out.println("************* test UserController.addUser() ***************");
    UserBean newUb = new UserBean(0, "lua", 39,1, "lua999", 0);
    userService.addUser(newUb);
    System.out.println("*************** end *************");
}

测试用例通过后,接着,我们运行项目,然后通过postman来调试一下users/new_user接口。

postman_addUser.png

执行完毕,查看数据库,检查是否新增了新用户,名字为 luapostman

addUser_Result_MySql.png

这样,我们增加新用户就成功啦。

但是不知你有没有这样的疑问? 我们定义的方法是没有返回值的,没有返回值的情况下,但这种情况下,前端同学是如何知道是否添加用户成功呢?你可以说可以通过判断 response code 是否等于200来判断呀?是可以,但是还是不方便,其实可以添加一个Base Response来封装响应数据,里面包含一下是否成功的code,以及提示信息,这样可以让调用我们接口的前端同学更加方便快速的知道操作结果了。

总结

今天我们新开发了addUser()接口来添加新用户,新接触了@PostMapping注释来实现Post操作,最终通过了测试用例与PostMan工具的调试,接下来就让我们来开发一下修改数据操作,也就是Update,我们下篇见。