• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

用户修改个人信息

武飞扬头像
盖伦暴打诺手
帮助1

修改个人资料


个人资料-持久层

###需要执行的SQL语句
1.根据用户信息的SQL语句

update t_user set phone=?,email=?,gender=?,modified_user=?,modified_time=? where uid =?

2.根据uid查询用户的数据(查询用户数据不需要重复开发)
selsct * from t_user where uid=?

接口与抽象方法

更新用户的信息方法的定义。

/**
 * 更新用户的信息
 * @param user  用户对象
 * @return  返回影响的行数
 */
Integer updateInfoByUid(User user);

抽象方法的映射

在UserMapper.xml文件中进行映射编写。

   <update id="updateInfoByUid">
        UPDATE t_user set
        /*if表示条件判断标签,test接受的是一个返回值为boolean类型的条件,
        如果test条件的结果为true,则执行if标签内部的语句,反之则不执行*/
        <if test="phone!=null">phone=#{phone},</if>
        <if test="email!=null">email=#{email},</if>
        <if test="gender!=null">gender=#{gender},</if>
        modified_user = #{modifiedUser},
        modified_time = #{modifiedTime}
        WHERE uid = #{uid}
    </update>

在测试类中完成功能的测试

  @Test
    public void updateInfoByUid(){
        User user = new User();
        user.setUid(7);
        user.setPhone("13111111111");
        user.setEmail("test02@qq.com");
        user.setGender(1);
        userMapper.updateInfoByUid(user);
    };

个人资料-服务层

异常规划

1.设计两个功能:
当打开页面时获取用户的信息并且填充到对应的文本框中。
检测用户是否点击了修改按钮,如果检测 到则执行修改用户信息的操作。
2.打开页面的时候可能找不到用户的数据,点击修改按钮之前需要再次的去检测用户的数据是否存在。

接口和抽象方法

主要有两个功能模块,对应的是两个抽象方法的设计。

/**
 * 根据用户的uid查询用户对象
 * @param uid
 * @return
 */
User getByUid(Integer uid);

/**
 * 更新用户的数据操作
 * @param uid 用户的id
 * @param username 用户的名称
 * @param user 用户对象的数据
 */
void changeInfo(Integer uid,String username,User user);

实现抽象方法

在UserServiceImpl类中添加两个抽象方法的具体实现。

  @Override
    public User getByUid(Integer uid) {
        User result = userMapper.findByUid(uid);
        if(result == null || result.getIsDelete()==1){
            throw new UserNotFoundException("用户不存在");
        }
        User user = new User();
        user.setUsername(result.getUsername());
        user.setPhone(result.getPhone());
        user.setEmail(result.getEmail());
        user.setGender(result.getGender());
        return user;
    }

    @Override
    public void changeInfo(Integer uid, String username, User user) {
        User result = userMapper.findByUid(uid);
        if(result == null || result.getIsDelete()==1){
            throw new UserNotFoundException("用户不存在");
        }
        user.setUid(uid);
        //user.setUsername(result.getUsername());
        user.setModifiedUser(username);
        user.setModifiedTime(new Date());

        Integer rows = userMapper.updateInfoByUid(user);

        if(rows!=1){
            throw new UpdateException("修改信息时发生了未知的异常");
        }

    }
学新通

在测试类进行单元测试

 @Test
    public void getByUid() {
        System.out.println(userService.getByUid(7));
    }

    @Test
    public void changeInfo() {
    User user = new User();
    user.setPhone("13333333333");
    user.setEmail("test22@qq.com");
    user.setGender(0);
    userService.changeInfo(7,"管理员",user);
    }

个人资料-控制层

处理异常

设计请求

1.设置一打开页面就发送当前用户数据的查询。
/users/get_by_uid
GET
HttpSession Session
JsonResult
2.点击修改按钮发送用户的数据修改操作请求的设计。
/users/change_info
POST
User user,HttpSession session
JsonResult
3.处理请求

@RequestMapping("/get_by_uid")
public JsonResult<User> getByUid(HttpSession session){
    User data = userService.getByUid(getUidFromSession(session));
    return new JsonResult<>(OK,data);
}

@RequestMapping("change_info")
public JsonResult<Void> changeInfo(User user,HttpSession session){
    //user对象有四部分数据:username,phone,email,gender
    //uid数据需要再次封装到user对象中
    Integer uid = getUidFromSession(session);
    String username = getUsernameFromSession(session);
    userService.changeInfo(uid,username,user);
    return new JsonResult<>(OK);
}

个人资料-前端页面

1.在打开userdata.html页面自动发送ajax请求(get_by_uid), 查询到的数据填充到这个页面。

$(document).ready(function () {
				$.ajax({
					url:"/users/get_by_uid",
					type:"GET",
					//data:$("#form-change-info").serialize(),
					dataType:"JSON",
					success:function(json){
						if(json.state == 200){
							//将查询到的数据重新设置到控件中
							$("#username").val(json.data.username);
							$("#phone").val(json.data.phone);
							$("#email").val(json.data.email);
							let radio = json.data.gender == 0?$("#gender-female"):$("#gender-male");
							//prop()表示给某个元素添加属性和属性的值
							radio.prop("checked","checked");
						}else {
							alert("用户数据不存在"   json.message);
						}
					},
					error:function (xhr) {
						alert("查询用户信息产生未知的异常"   xhr.message);
					}
				});
			});
学新通

2.在检测到用户点击了修改按钮之后发送一个ajax请求(change_ info)。

$("#btn-change-info").click(function(){
				$.ajax({
					url:"/users/change_info",
					type:"POST",
					data:$("#form-change-info").serialize(),
					dataType:"JSON",
					success:function(json){
						if(json.state == 200){
							alert("修改成功");
							//修改成功后重新加载页面
							location.href = "userdata.html";
						}else {
							alert("修改失败");
						}
					},
					error:function (xhr) {
						alert("修改时产生了位置的异常"   xhr.message);
					}
				});
			});
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfjkiea
系列文章
更多 icon
同类精品
更多 icon
继续加载