例如:更新用户的手机号码,更新后的号码不能与其他用户的手机号重复:
Controller层:
@PutMapping("/updateUser")
public AjaxResult updateUser(@RequestBody ComUser comUser){
//更新时判断该手机号唯一不唯一
if(UserConstants.NOT_UNIQUE.equals(comUserService.checkPhoneNumberUnique(comUser))){
return AjaxResult.error("修改失败,号码已存在");
}
return toAjax(comUserService.updateComUserInfo(comUser));
}
UserConstants:
/**
* 用户常量信息
*/
public class UserConstants
{
/** 校验返回结果码 */
public final static String UNIQUE = "0";
public final static String NOT_UNIQUE = "1";
}
service层:
@Override
public String checkPhoneNumberUnique(ComUser comUser) {
Long userId = StringUtils.isNull(comUser.getId()) ? -1L : comUser.getId();
//根据传入的对象手机号来查询数据库中有没有对应用户
ComUser info = comUserMapper.checkPhoneNumberUnique(comUser.getPhoneNumber());
//如果存在,则根据用户的id判断这个用户是不是它本身
if (StringUtils.isNotNull(info) && info.getId().longValue() != userId.longValue())
{
//如果查出来的用户不为空且用户id和传来的用户id不相同,则说明数据库中已经有其他用户使用这个手机号了,返回不唯一的标志
return UserConstants.NOT_UNIQUE;
}
//其他情况下,返回唯一的标志
return UserConstants.UNIQUE;
}
mapper层:
<select id="checkPhoneNumberUnique" parameterType="String" resultType="ComUser">
<include refid="selectComUserVo"/>
where phone_number=#{phoneNumber} limit 1
</select>