好好编程-物流项目11【用户管理-修改和删除】

举报
波波烤鸭 发表于 2022/03/30 02:28:30 2022/03/30
【摘要】   在上文的基础上来完成用户的修改和删除 用户管理 1.修改用户 1.1用户界面调整 1.2控制层调整 @Override public void getUpdateUserInfo(...

  在上文的基础上来完成用户的修改和删除
在这里插入图片描述

用户管理

1.修改用户

1.1用户界面调整

在这里插入图片描述在这里插入图片描述

1.2控制层调整

在这里插入图片描述

@Override
public void getUpdateUserInfo(Integer id,Model model) {
	RoleExample roleExample = new RoleExample();
	List<Role> roles = roleMapper.selectByExample(roleExample );
	if(id !=null && id > 0){
		// 表示更新数据,需要根据id查询用户信息
		User user = userMapper.selectByPrimaryKey(id);
		// 查询用户具有的角色信息
		List<Integer> roleIds = userMapper.selectRoleIdByUserId(id);
		model.addAttribute("user", user);
		model.addAttribute("roleIds", roleIds);
	}
	model.addAttribute("roles", roles);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

UserMapper接口

List<Integer> selectRoleIdByUserId(Integer id);

  
 
  • 1

sql语句

 <!-- 根据用户编号查询对应的角色信息 -->
 <select id="selectRoleIdByUserId" resultType="int">
 	select role_id from t_user_role where user_id = #{id}
 </select>

  
 
  • 1
  • 2
  • 3
  • 4

1.3修改页面

<form action="/user/saveOrUpdate">
	<ul class="forminfo">
		<input type="hidden" name="user.userId" value="${user.userId}">
		<li><label>账号</label>
			<input name="user.userName"  type="text" value="${user.userName}"
			class="dfinput" />
			<i>账号不能超过30个字符</i>
		</li>
		<li><label>姓名</label>
			<input name="user.realName" type="text" value="${user.realName}"
			class="dfinput" />
		</li>
		<li><label>密码</label>
			<input name="user.password" type="password" value="${user.password}"
			class="dfinput" />
		</li>
		<li><label>确认密码</label>
			<input name="confirmPassword" value="${user.password}"
			type="password" class="dfinput" />
		</li>
		<li><label>电话</label>
			<input name="user.phone" type="text" value="${user.phone}"
			class="dfinput" /><i></i>
		</li>
		<li><label>邮箱</label>
			<input name="user.email" type="text" value="${user.email}"
			class="dfinput" /><i></i>
		</li>
		<li><label>分配角色</label>
		    <div style="height: 32px;line-height: 32px;">
		    	<c:set var="flag" value="false"></c:set>
		    	
		    	<c:forEach items="${roles }" var="role">
		    		<!-- 
		    			每循环一次 判断取出来的角色编号在不在用户具有的角色集合中
		    			在就设置flag=true
		    			不在就设置flag=false
		    		 -->
		    		 <c:forEach items="${roleIds }" var="roleId">
		    		 	<c:if test="${roleId eq role.roleId }">
		    		 		<c:set var="flag" value="true"></c:set>
		    		 	</c:if>
		    		 </c:forEach>
		    		<input type="checkbox"  ${flag eq true?'checked':'' } value="${role.roleId }" name="roles">
		    		 ${role.roleName }&nbsp;&nbsp;
		    		 
		    		<c:set var="flag" value="false"></c:set> 
		    	</c:forEach>
		    </div>
		   
	    </li>
		<li><label>&nbsp;</label>
			<input name="" type="submit"
			class="btn" value="确认保存" /></li>
		</ul>
</form>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

在这里插入图片描述
在这里插入图片描述

1.4提交修改数据

  控制层不用修改,修改service层的实现类,如下:

@Override
public void saveOrUpdate(UserDto userDto) throws Exception {
	// 获取User对象
	User user = userDto.getUser();
	// 获取关联的角色信息
	List<Integer> roles = userDto.getRoles();
	// 判断是添加还是修改数据
	if(user.getUserId()!=null && user.getUserId() > 0){
		// 表示userId存在,说明是更新
		// 修改用户
		userMapper.updateByPrimaryKeySelective(user);
		// 根据用户ID删除管理的角色信息
		userMapper.deleteRoleIdByUserId(user.getUserId());
		// 再保存用户和角色的关联关系
		if(roles!=null && roles.size() > 0){
			for (Integer roleId : roles) {
				userMapper.inserUserIdAndRoleId(user.getUserId(),roleId);
			}
		}
	}else{
		// 不存在id说明是添加数据
		// 先添加用户数据 获取生成的userId
		userMapper.insert(user);
		// 再保存用户和角色的对应关系,在一个事务中处理
		if(roles!=null && roles.size() > 0){
			for (Integer roleId : roles) {
				userMapper.inserUserIdAndRoleId(user.getUserId(),roleId);
			}
		}
		
	}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

UserMapper接口

void deleteRoleIdByUserId(Integer userId);

  
 
  • 1

sql语句

  <delete id="deleteRoleIdByUserId">
  	delete from t_user_role where user_id=#{id}
  </delete>

  
 
  • 1
  • 2
  • 3

测试修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改成功!

2.删除用户

  本来用户是不用真的删除的,实际中我们会给用户表添加一个是否删除的字段,删除数据只需要修改该字段即可,也就是我们常说的伪删除,在此处我们来介绍下真实删除(有关联关系的情况下)

2.1提交删除请求

在这里插入图片描述

2.2处理删除请求

控制器

@RequestMapping("/delete")
public String deleteUser(Integer id) throws Exception{
	userService.deleteUser(id);
	return "redirect:/user/query";
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

service实现类中的方法

@Override
public void deleteUser(int id) throws Exception {
	// 1.删除用户和角色的关联关系
	userMapper.deleteRoleIdByUserId(id);
	// 2.删除用户
	userMapper.deleteByPrimaryKey(id);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

测试:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
删除成功。
在有外键关联的时候,我们需要先删除关联的数据然后再删除主表数据。

文章来源: dpb-bobokaoya-sm.blog.csdn.net,作者:波波烤鸭,版权归原作者所有,如需转载,请联系作者。

原文链接:dpb-bobokaoya-sm.blog.csdn.net/article/details/88725639

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。