> 文档中心 > SpringBoot+MyBatis+MYSQL项目实战三(修改密码)

SpringBoot+MyBatis+MYSQL项目实战三(修改密码)


SpringBoot+MyBatis+MYSQL项目实战三(修改密码

项目源码地址:电脑商城实战

一:修改密码——持久层

1.1规划需要执行的SQL语句
根据用户的uid修改用户的password

update t_user set password=?,modified_user=?,modified_time? where uid = ?

根据uid查询用户的数据,在修改密码之前,首先要保证当前这用户的数据存在,检测是被标记为已经删除、检测输入的原始密码是否正确。

select * from t_user where uid =?

1.2设计接口和抽象方法

 /     * 根据用户的uid来修改用户密码     * @param uid 用户的id     * @param password 用户输入的新密码     * @param modifiedUser 表示修改数据的执行者     * @param modifiedTime 表示修改数据的时间     * @return 返回值为受影响的行数     */    Integer updatePasswordByUid(@Param("uid") Integer uid,    @Param("password") String password,    @Param("modifiedUser") String modifiedUser,    @Param("modifiedTime") Date modifiedTime);    /     * 根据用户的id查询用户的数据     * @param uid 用户的id     * @return 如果找到则返回用户的对象,反之返回null     */    User findByUid(Integer uid);

1.3SQL映射
配置到映射文件UserMapper.xml文件中。

      <update id="updatePasswordByUid" > UPDATE t_user SET     password = #{password},     modified_user = #{modifiedUser},     modified_time = #{modifiedTime} WHERE uid = #{uid}    </update>    <select id="findByUid" resultMap="UserEntityMap"> SELECT * FROM t_user WHERE uid = #{uid}    </select>

1.4单元测试

 @Test    public void updatePasswordByUid(){ userMapper.updatePasswordByUid(6,"123456","管理者",new Date());    }    @Test    public void findByUid(){ User byUid = userMapper.findByUid(7); System.out.println(byUid);    }

二:修改密码——业务层

2.1规划异常

  • 用户的源密码错误
  • 用户没有发现的异常,is_delete==1,uid找不到
  • update在更新的时候,有可能产生未知的异常
//用户更新数据时产生的未知异常public class UpdateException extends ServiceException{    public UpdateException() { super();    }    public UpdateException(String message) { super(message);    }    public UpdateException(String message, Throwable cause) { super(message, cause);    }    public UpdateException(Throwable cause) { super(cause);    }    protected UpdateException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace);    }}

2.2设计接口和抽象方法
执行用户修改密码的核心方法
userSerivice接口

    void changePassword(Integer uid,   String username,   String oldPassword,   String newPassword);

在实现类中实现当前的抽象方法

三:修改密码——控制层

3.1处理异常
UpdateException放在异常处理机制中,配置在统一的异常处理方法BaseController

else if(e instanceof UpdateException){     result.setState(5003);     result.setMessage("更新数据时产生未知的异常"); }

3.2设计请求
设计用户提交的请求,并设计响应的方式。

请求路径:/users/change_password请求参数:String oldPassword, String newPassword, HttpSession session请求类型:POST响应结果:JsonResult

3.3处理请求

@GetMapping("/change_password")    public JsonResult<Void> changePassword(String oldPassword,String newPassword,HttpSession session){ Integer uid = getuidFromSession(session); String username = getUsernameFromSession(session); iUserService.changePassword(uid,username,oldPassword,newPassword); return new JsonResult<>(OK);    }

四:修改密码——前端页面

具体步骤同前几篇一样的,使用ajax技术

$("#btn-change-password").click(function () {$.ajax({url: "/users/change_password",type: "POST",data : $("#form-change-password").serialize(),dataType: "JSON",success: function (json) {if(json.state == 200){alert("密码修改成功")}else{alert("密码修改失败")}},error: function (xhr) {alert("修改密码时产生位置的异常"+xhr.message);}})})

SpringBoot+MyBatis+MYSQL项目实战三(修改密码) 创作打卡挑战赛 SpringBoot+MyBatis+MYSQL项目实战三(修改密码) 赢取流量/现金/CSDN周边激励大奖