说明:
(1)本篇博客主要内容:开发注册接口;
(2)本篇博客涉及到的点:
● Controller层中发现的错误,我们可以直接返回对应错误的ApiRestResponse;Service层中发现的错误,我们不能直接返回对应错误的ApiRestResponse,而是采用【向上抛异常】的策略来解决这个问题;
● mybatis中的一个用法:【<include refid="Base_Column_List"/>】,即使用<include>来引用SQL片段;
● 这儿判空时,我们没有使用【userName==null】的方式(因为,有的时候,前端确实传过来了userName,这个userName字符串是个空字符串;那么此时,这种方式就可能出现误判);而是使用的Springframework提供的一个工具【StringUtils.isEmpty(userName)】来判空;
● 我们在【Spring Boot电商项目8:数据库设计与项目初始化三:创建Spring Boot项目;使用【mybatis-generator】插件生成实体类、mapper接口、mapper.xml等逆向文件;】中,通过【mybatis-generator】插件生成的方法中,有【userMapper.insertSelective(user)】方法和【insertSelective()】方法;这二者的区别,就是insertSelective()允许插入一个【部分属性有值的,User对象】;
(3)本篇博客尤其需要注意的两点内容:
●【非Controller层出现的错误】应该采取向上抛异常的策略来处理;这在【Spring Boot电商项目16:用户模块五:注册接口开发之:自定义异常类;(来为处理【非Controller层出现的错误】做准备;)】中做了详细阐述;
● 对于抛出的异常也需要进行处理,以达到返回格式统一和安全这两个目的;这在【Spring Boot电商项目17:用户模块六:注册接口开发之:使用【GlobalExceptionHandler】来全局统一处理异常;(涉及了@ControllerAdvice等注解)】中做了详细阐述;
目录
1.在UserController中,创建注册方法:register()方法;
2.在UserService接口中,定义注册的方法:register()方法;
3.在UserServiceImpl实现类中,去实现register()注册方法;
4.在UserMapper接口中,定义根据userName查询用户的方法,并在UserMapper.xml中编写对应的SQL;
(1)在UserMapper接口中,定义根据userName查询用户的方法;
零:【注册】接口,预先说明;
注册接口的接口文档:
同时,在【Spring Boot电商项目12:用户模块一:用户模块介绍;(用户模块的内容概述;用户模块的五个接口的接口文档介绍;)】也说明了注册接口的几个要求,比如:用户名不能为空、密码不能为空、密码不能小于8位,用户名不能重复等;
一:实现注册接口;
1.在UserController中,创建注册方法:register()方法;
/** * 注册方法 * @param userName * @param password * @return * @throws ImoocMallException */ @PostMapping("/register") @ResponseBody public ApiRestResponse register(@RequestParam("userName") String userName, @RequestParam("password") String password) throws ImoocMallException { if (StringUtils.isEmpty(userName)) {//如果用户名为空,直接返回用户名不能为空的信息; return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_USER_NAME); } if (StringUtils.isEmpty(password)) {//如果密码为空,直接返回密码不能为空的信息; return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_PASSWORD); } if (password.length() < 8) {//如果密码长度小于8位,直接返回密码长度不能小于8位的信息; return ApiRestResponse.error(ImoocMallExceptionEnum.PASSWORD_TOO_SHORT); } userService.register(userName, password); return ApiRestResponse.success(); }
说明:
(1)【@RequestParam】注解,有助于我们更好的识别和获取请求中的参数;如有需要,可以参考
●【SpringMVC入门与数据绑定5:Spring MVC数据绑定二:Controller接收请求中的参数之:使用【方法参数】接收;(PS:包括get请求时使用的@RequestParam())】通过这篇博客可以看到,【@RequestParam】注解能够帮助获取get请求中的参数;
●【