public void getUpdateUserInfo(Integer id,Model model) {
RoleExample roleExample = new RoleExample();
List roles = roleMapper.selectByExample(roleExample );
if(id !=null && id > 0){
// 表示更新数据,需要根据id查询用户信息
User user = userMapper.selectByPrimaryKey(id);
// 查询用户具有的角色信息
List roleIds = userMapper.selectRoleIdByUserId(id);
model.addAttribute(“user”, user);
model.addAttribute(“roleIds”, roleIds);
}
model.addAttribute(“roles”, roles);
}
UserMapper接口
List selectRoleIdByUserId(Integer id);
sql语句
select role_id from t_user_role where user_id = #{id}
1.3修改页面
<input name=“user.userName” type=“text” value=“${user.userName}”
class=“dfinput” />
账号不能超过30个字符
<input name=“user.realName” type=“text” value=“${user.realName}”
class=“dfinput” />
<input name=“user.password” type=“password” value=“${user.password}”
class=“dfinput” />
<input name=“confirmPassword” value=“${user.password}”
type=“password” class=“dfinput” />
<input name=“user.phone” type=“text” value=“${user.phone}”
class=“dfinput” />
<input name=“user.email” type=“text” value=“${user.email}”
class=“dfinput” />
<c:set var=“flag” value=“false”></c:set>
<c:forEach items=“${roles }” var=“role”>
<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” f l a g e q t r u e ? ′ c h e c k e d ′ : ′ ′ v a l u e = " {flag eq true?'checked':'' } value=" flageqtrue?′checked′:′′value="{role.roleId }" name=“roles”>
${role.roleName }
<c:set var=“flag” value=“false”></c:set>
</c:forEach>
<input name=“” type=“submit”
class=“btn” value=“确认保存” />
1.4提交修改数据
控制层不用修改,修改service层的实现类,如下:
@Override
public void saveOrUpdate(UserDto userDto) throws Exception {
// 获取User对象
User user = userDto.getUser();
// 获取关联的角色信息
List 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接口
void deleteRoleIdByUserId(Integer userId);
sql语句
delete from t_user_role where user_id=#{id}
最后
我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习
已经将知识体系整理好(源码,笔记,PPT,学习视频)
id=“deleteRoleIdByUserId”>
delete from t_user_role where user_id=#{id}
最后
我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习
已经将知识体系整理好(源码,笔记,PPT,学习视频)
[外链图片转存中…(img-7KY8b1Uu-1718918150221)]
[外链图片转存中…(img-NLLvIkFg-1718918150222)]
[外链图片转存中…(img-ZHm6tdMO-1718918150223)]