用户修改个人信息
修改个人资料
个人资料-持久层
###需要执行的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
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13