仿抖音短视频用户业务模块----完成用户信息增删改查并通过接口文档联调(模拟工作环境)

仿抖音项目持续更新中:
仿抖音短视频APP专栏

练习:

目录

1.根据nickname或者mobile来查询用户信息

 2.根据用户id删除用户信息

3.根据用户id修改用户信息


1.根据nickname或者mobile来查询用户信息

首先在controller层中,写一个路由地址,这里我们的用户信息用列表返回。

 注:我们这里传参是DTO,这里我在model层重写了一个类来存放nickname和mobile,

 接着在我们的service接口中写方法:

在实现类中调用mapper层的接口:

 在mapper接口中:

最后就需要在我们的xml文件里来操作数据库查询用户信息:

  <select id="getUserListByQuery" resultType="com.imooc.vo.UsersVO">
    SELECT
      id,mobile,nickname,imooc_num,face,sex,birthday,
      country,province,city,district,description,
      bg_img,can_imooc_num_be_updated
    FROM users
    WHERE 1=1
    <if test="nickname != null">
        AND nickname= #{nickname}

    </if>
    <if test="mobile != null">
        And mobile = #{mobile}
    </if>
  </select>

这里为什么会使用1=1,因为我们sql语句中没有 where和AND连用的语法,if是标签.

随后我们在接口文档中测试:

 打开navicat检查:

成功。

 2.根据用户id删除用户信息

在我们的controller层来随便写一个路由名字,我们这里用HashMap来接受返回的用户信息,键是成功,值是service层返回的结果。

 在service写接口:

 注:这里返回的是布尔类型,传入的参数是String类型。

实现Service接口:

    @Transactional
    @Override
    public boolean deleteUser(String userId) {
        if (StringUtils.isNotBlank(userId)) {
            try {

                int effectedNum = usersMapper.deleteUser(userId);
                if (effectedNum > 0) {
                    return true;
                } else {
                    throw new RuntimeException("删除用户信息失败!");
                }
            } catch (Exception e) {
                throw new RuntimeException("删除用户信息失败:" + e.toString());
            }
        }else{
                throw new RuntimeException("Id不能为空!");
            }
        }

 这里我们要清除一点,我们的数据库完成增加或删除后返回的是影响行数,我们这里需要用int来接受。如果影响行数大于1,则说明删除成功。

在mapper层写接口:

 最后在xml文件中,完成用户信息删除:

这里其实我后来发现我犯了一个错误,这里如果传入的UserId为空,就会导致所有表被删除,这是个很严重的错误,我们不应该使用1=1 和 if标签,应该直接:

  <delete id="deleteUser" >
    DELETE FROM
        users
    WHERE
       id =#{userId}
  </delete>

 重启,打开我们的接口文档:

打开navicat检查:

 删除成功。

3.根据用户id修改用户信息

首先在controller层中,用Map接受返回的键和值 

这里Uptate我写了一个类来传入我们需要修改的信息:

 

接着在service接口:

 在service实现类中:

    @Transactional
    @Override
    public boolean modifyUserInfo(UpdateDTO updateDTO) {
        if (StringUtils.isNotBlank(updateDTO.getUserId())) {
            try {

                int effectedNum = usersMapper.modifyUserInfo(updateDTO);
                if (effectedNum > 0) {
                    return true;
                } else {
                    throw new RuntimeException("用户信息修改失败!");
                }
            } catch (Exception e) {
                throw new RuntimeException("修改用户信息失败:" + e.toString());
            }
        }else{
            throw new RuntimeException("Id不能为空!");
        }
    }

注:我们这里调用了updateDTO中的get方法获取UserId,虽然我们DTO中没有写方法,但我们的注解会帮助我们自动生成。

接着我们要在mapper层写接口:

 最后就是在xml文件中来操作我们的数据库完成修改:

 

  <update id="modifyUserInfo" parameterType="com.imooc.vo.UsersVO">
    update users
    <set>
      <if test="nickname != null">nickname= #{nickname},</if>
      <if test="mobile != null">mobile = #{mobile},</if>
    </set>
    where id=#{userId}
  </update>

接着重启类:

然后在接口文档中修改:

 

 在navicat中查看:

 修改成功。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么时候养猫猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值