1. 个人资料模块介绍
- 首先要获取用户信息,展示在个人资料信息中;
- 对电话号码、电子邮箱、性别进行更改。
2. 持久层
1. 规划sql语句
- 根据uid获取用户信息:SELECT * FROM t_user WHERE uid=?
- 修改电话号码、电子邮箱、性别:
UPDATE t_user SET phone=?,emali=?,gender=?,modified_user=?,modified_time=? WHERE uid=?
2. 编写mapper接口
//根据uid查找用户数据
User findByUid(Integer uid);
//根据uid修改用户信息,返回影响行数
Integer updateInfo(User user);
3. 编写sql映射文件
在设置属性值前判断值是否为空,为空的话就不修改
<select id="findByUid" resultMap="UserMap">
SELECT * FROM t_user WHERE uid=#{uid}
</select>
<update id="updateInfoByUid">
UPDATE t_user
SET
<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>
4. 测试
@Test
public void updateInfoByUid() {
User user = userMapper.findByUid(10);
user.setPhone("1234567890");
user.setEmail("luck@qq.com");
user.setGender(1);
userMapper.updateInfoByUid(user);
}
数据库中的查询结果:
3. 业务层
1. 规划异常
- 打开页面时找不到用户数据
- 点击删除按钮之前需要再次检测用户数据是否存在
2. 接口和抽象方法
根据uid得到用户数据
//根据uid查询用户数据
User getByUid(Integer uid);
//修改用户数据
void changeInfo(Integer uid, String username, User user);
3. 编写实现类方法
@Override
public User getByUid(Integer uid) {
User result = userMapper.findByUid(uid);
//判断用户是否存在或是否被删除
if(result == null || result.getIsDelete() == 1) {
throw new UserNotFoundException();
}
//将需要的用户信息封装到一个新的user对象中,并返回该对象
// User user = new User();
// user.setUsername(result.getUsername());
// user.setPhone(result.getPhone());
// user.setEmail(result.getEmail());
// user.setGender(result.getGender());
return result;
}
@Override
public void changeInfoByUid(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(username);
user.setModifiedUser(username);
user.setModifiedTime(new Date());
Integer rows = userMapper.updateInfoByUid(user);
if(rows != 1) {
throw new UpdateException("修改个人资料时产生的异常");
}
}
4. 测试
- 测试getByUid()
@Test
public void getByUid() {
User byUid = userService.getByUid(10);
System.out.println(byUid);
}
结果:
2. 测试changeInfoByUid()
@Test
public void changeInfoByUid() {
User user = new User();
user.setPhone("1423455");
user.setEmail("123@123.com");
user.setGender(1);
userService.changeInfoByUid(10,"luck",user);
}
查询数据库数据结果: