仿抖音项目持续更新中:
仿抖音短视频APP专栏
练习:
目录
首先在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检查:

成功。
在我们的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检查:

删除成功。
首先在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文件中来操作我们的数据库完成修改:
-
"modifyUserInfo" parameterType="com.imooc.vo.UsersVO"> - update users
-
- <if test="nickname != null">nickname= #{nickname},if>
- <if test="mobile != null">mobile = #{mobile},if>
-
- where id=#{userId}
-
接着重启类:
然后在接口文档中修改:


在navicat中查看:

修改成功。