前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >好好编程-物流项目11【用户管理-修改和删除】

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

作者头像
用户4919348
发布2019-04-02 10:47:45
3980
发布2019-04-02 10:47:45
举报
文章被收录于专栏:波波烤鸭

  在上文的基础上来完成用户的修改和删除

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

用户管理

1.修改用户

1.1用户界面调整

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

1.2控制层调整

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
@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);
}

UserMapper接口

代码语言:javascript
复制
List<Integer> selectRoleIdByUserId(Integer id);

sql语句

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

1.3修改页面

代码语言:javascript
复制
<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.4提交修改数据

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

代码语言:javascript
复制
@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);
			}
		}
		
	}
}

UserMapper接口

代码语言:javascript
复制
void deleteRoleIdByUserId(Integer userId);

sql语句

代码语言:javascript
复制
  <delete id="deleteRoleIdByUserId">
  	delete from t_user_role where user_id=#{id}
  </delete>

测试修改

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

修改成功!

2.删除用户

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

2.1提交删除请求

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

2.2处理删除请求

控制器

代码语言:javascript
复制
@RequestMapping("/delete")
public String deleteUser(Integer id) throws Exception{
	userService.deleteUser(id);
	return "redirect:/user/query";
}

service实现类中的方法

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

测试:

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

删除成功。 在有外键关联的时候,我们需要先删除关联的数据然后再删除主表数据。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年03月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用户管理
    • 1.修改用户
      • 1.1用户界面调整
      • 1.2控制层调整
      • 1.3修改页面
      • 1.4提交修改数据
    • 2.删除用户
      • 2.1提交删除请求
      • 2.2处理删除请求
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档