springboot入门项目-个人资料1-持久层/业务层

本文介绍了使用SpringBoot进行个人资料管理的实现,包括持久层的sql规划、mapper接口和映射文件编写,以及业务层的异常处理、接口设计和实现,最后进行了测试验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 个人资料模块介绍
  1. 首先要获取用户信息,展示在个人资料信息中;
  2. 对电话号码、电子邮箱、性别进行更改。
    在这里插入图片描述
2. 持久层
1. 规划sql语句
  1. 根据uid获取用户信息:SELECT * FROM t_user WHERE uid=?
  2. 修改电话号码、电子邮箱、性别:
    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. 规划异常
  1. 打开页面时找不到用户数据
  2. 点击删除按钮之前需要再次检测用户数据是否存在
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. 测试
  1. 测试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);
    }

查询数据库数据结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值