SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据

时间:2024-03-21 07:24:21

功能分析:要做修改,先要查到id对应的用户信息和角色信息,再修改保存。

SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据
选中一条记录,对记录进行修改,进入修改页面
上级部门的获取 deptById–SysUser
角色的勾选获取 userRole
SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据

第一部分:修改前操作。查询:查询id对应用户信息,和角色信息

一、Dao

SysRoleDao

//    修改前:查询用户信息 --把返回的结果封装到vo中:
    SysUserDeptResult findObjectById(Integer id);

SysUserRole

List<Integer> findRoleIdsByUserId(Integer id);

二、Mapper

user

   <!--修改用户信息前:查找id对应的用户个人信息-->
    <select id="findObjectById" parameterType="int" resultMap="userDeptResult">
          select *
          from sys_users
          where id=#{id}
    </select>

userrole

<select id="findRoleIdsByUserId" resultType="int">
         select role_id
         from sys_user_roles
         where user_id=#{userId}
    </select>

三、Service

//    基于用户id 查询用户个人信息,用户角色信息,存放在map中
    Map<String,Object> findObjectById(Integer userId);
//    修改前操作:查看用户个人信息和角色信息
    @Override
    public Map<String, Object> findObjectById(Integer userId) {
//        合法性验证
        if(userId==null||userId<=0){
            throw new IllegalArgumentException("id值不正确");
        }
//        调用查询用户信息
        SysUserDeptResult user = sysUserDao.findObjectById(userId);
        if(user==null)
            throw new ServiceException("此用户已经不存在");
//        调用查询用户部门信息
        List<Integer> roleIds = sysUserRoleDao.findRoleIdsByUserId(userId);
//        返回结果
        Map<String,Object> map=new HashMap<>();
        map.put("user",user);
        map.put("roleIds",roleIds);
        return map;
    }

四、Controller

//    修改用户前:查询用户对应个人信息和用户的角色信息
    @RequestMapping("doFindObjectById")
    @ResponseBody
    public JsonResult doFindObjectById(Integer id){
        Map<String,Object> map=
                sysUserService.findObjectById(id);
        return new JsonResult(map);
    }

测试一下吧:

SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据

要求:不进行密码修改 在页面上如果是修改操作,不显示密码行

SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据

给密码行添加一个id,找到初始化页面的部分,移除掉密码行

SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据

第二部分==修改提交

要求:修改数据时不对密码进行操作

SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据

一、Dao:涉及两个表的操作,1.用户信息(除密码)2.清除掉原先的用户与角色对应信息,添加新的用户与角色对应信息

SysUserDao

//    修改用户信息
    int updateObject(SysUser entity);

SysUserRoleDao

//   修改操作: 基于用户id删除对应角色旧数据  
    int deleteObjectsByUserId(Integer roleId);


//    修改操作:添加 id与角色对应关系      已有
  int insertObject(@Param("userId") Integer userId,
                     @Param("roleIds") Integer[] roleIds);

二、Mapper:思考不适用的动态sql如何进行if判定

SysUserMapper

<!--修改用户信息-->
    <update id="updateObject" parameterType="com.jt.sys.SysUser">
         update sys_users
         <set>
             <if test="username!=null and username!=''">
                 username=#{username},
             </if>
             <if test="email!=null and email!=''">
                 email=#{email},
             </if>
             <if test="mobile!=null and mobile!=''">
                 mobile=#{mobile},
             </if>
             <if test="deptId!=null and deptId!=''">
                 deptId=#{deptId},
             </if>
             <if test="modifiedUser!=null and modifiedUser!=''">
                 modifiedUser=#{modifiedUser},
             </if>
             modifiedTime=now()
         </set>
        where id=#{id}
    </update>

SysUserRoleMapper

 <!--根据用户id删除角色id 返回值int-->
    <delete id="deleteObjectsByUserId" parameterType="int">
        delete from sys_user_roles
        where user_id=#{userId}
    </delete>

三、Service

//    修改用户信息 传值 用户信息和角色
    int updateObject(SysUser entity,Integer[] roleIds);
@Override
    public int updateObject(SysUser entity, Integer[] roleIds) {
//        合法性验证
//           1.实体内容不能为空
        if(entity==null){
            throw new IllegalArgumentException("保存对象不能为空");
        }
////        2.用户名不能为空
        if(StringUtils.isEmpty(entity.getUsername()==null)){
            throw new IllegalArgumentException("用户名不能为空");
        }
//        调用方法
//        保存用户自身信息
        int rows = sysUserDao.updateObject(entity);
//      删掉原始勾选角色
        sysUserRoleDao.deleteObjectsByUserId(entity.getId());
//      重新保存角色关系
        sysUserRoleDao.insertObject(entity.getId(),roleIds);
//        返回结果
        return rows;
    }

四、Controller

//    修改用户信息
    @RequestMapping("doUpdateObject")
    @ResponseBody
    public JsonResult doUpdateObject(SysUser entity,Integer[] roleIds){
        sysUserService.updateObject(entity,roleIds);
        return new JsonResult("update ok!");
    }

测试一下吧

SSM-Project-Day05-用户管理-功能:用户的信息修改 要求:修改时不显示密码,不影响跟新数据