掘金日新计划 · 8 月更文挑战第34天--Spring Boot电商项目(七)

108 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第34天,点击查看活动详情

今天我们来学习一下枚举类接口的创建

1.新建exception包(主要用来存放各种异常情况)并且创建ImoocMallException枚举类

image.png

  • 定义枚举
NEED_USER_NAME(10001,"用户名不能为空"),
PASSWORD_TOO_SHORT(10003,"密码长度不能小于8位"),
NEED_PASSWORD(10002,"密码不能为空");
  • 定义枚举类类型
Integer code;
String msg;
  • 生成构造方法
ImoocMallExceptionEnum(Integer code, String msg) {
    this.code = code;
    this.msg = msg;
}
  • 分别创建getter和setter方法
public Integer getCode() {
    return code;
}

public void setCode(Integer code) {
    this.code = code;
}

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

2.控制器UserController新建register(注册)方法

image.png

@PostMapping("/register")
    @ResponseBody
    public ApiRestResponse register(@RequestParam("userName") String userName,@RequestParam("password") String password){
//
        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){
            return ApiRestResponse.error(ImoocMallExceptionEnum.PASSWORD_TOO_SHORT);
        }
        userService.register(userName,password);
        return ApiRestResponse.success();

    }

代码说明:

  • @RequestParam("userName") String userName,@RequestParam("password") String password):表示请求参数为userName和password
  • StringUtils.isEmpty:用来判断参数为空或者为空字符串的方法,使用比较优雅的方式进行判断
  • userService.registe:表示调用userService的register注册方法
  • ImoocMallExceptionEnum.NEED_USER_NAME,ImoocMallExceptionEnum.NEED_PASSWORD,ImoocMallExceptionEnum.PASSWORD_TOO_SHORT:是我们定义的枚举类异常

3.UserService接口类新增register方法

image.png

4.impl接口实现类UserServiceImpl新增register实现方法

image.png

public void register(String userName, String password) {
   User result =  userMapper.selectByName(userName);
}

代码说明:

  • selectByName:用来判断注册时候时候,是否存在同名的用户名

5.model/dao/UserMapper新增selectByName方法

image.png

6.resources/mappers/UserMapper.xml新增selectByName数据库查询语句

image.png

<select id="selectByName" parameterType="java.lang.String" resultMap="BaseResultMap">
  select
      <include refid="Base_Column_List"/>
      from imooc_mall_user where username=#{userName,jdbcType=VARCHAR}
</select>

代码说明:

  • parameterType="java.lang.String":表示参数类型为字符串
  • resultMap="BaseResultMap":返回对象的结构 BaseResultMap是UserMapper前面resultMap定义的id属性值 image.png

7.启动服务并且打上断点

image.png 记住请求参数为body,是以表单的形式传参,不是json image.png 如果使用json的形式,则会报错 image.png