携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第34天,点击查看活动详情
今天我们来学习一下枚举类接口的创建
1.新建exception包(主要用来存放各种异常情况)并且创建ImoocMallException枚举类
- 定义枚举
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(注册)方法
@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方法
4.impl接口实现类UserServiceImpl新增register实现方法
public void register(String userName, String password) {
User result = userMapper.selectByName(userName);
}
代码说明:
- selectByName:用来判断注册时候时候,是否存在同名的用户名
5.model/dao/UserMapper新增selectByName方法
6.resources/mappers/UserMapper.xml新增selectByName数据库查询语句
<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属性值
7.启动服务并且打上断点
记住请求参数为body,是以表单的形式传参,不是json
如果使用json的形式,则会报错