文章目录

  • 用户信息添加流程图
  • 用户控制层
  • service层
  • jsp页面
    • user.jsp页面
  • 提交数据
    • Dao层
    • 控制层接收数据
    • service接口
    • service接口实现类
    • 添加inserUserIdAndRoleId实现
      • 接口定义
  • 测试

用户信息添加流程图

用户控制层

控制层添加跳转页面的方法

    /*** 进入添加或者修改页面* @param id* @return*/@RequestMapping("/userUpdate")public String userUpdatePage(Integer id,Model model){// 查询添加或者更新需要的数据userService.getUpdateUserInfo(id,model); return "/user/userUpdate";}

service层

添加如下方法

    /*** 获取添加或者修改用户需要的数据* 添加*    获取所有的角色信息* 修改*    获取所有的角色信息及根据id查询的用户信息* @param id* @return*/public void getUpdateUserInfo(Integer id,Model model);

实现类中添加

    @Resource private RoleMapper roleMapper;@Overridepublic void getUpdateUserInfo(Integer id,Model model) {RoleExample roleExample = new RoleExample();List<Role> roles = roleMapper.selectByExample(roleExample );model.addAttribute("roles", roles);}

jsp页面

user.jsp页面

添加跳转到添加用户页面的链接

新建一个userUpdate.jsp作为用户添加的页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="/css/style.css" rel="stylesheet" type="text/css" /></head>
<body><div class="place"><span>位置:</span><ul class="placeul"><li><a href="/">首页</a></li><li><a href="/user/query">用户管理</a></li></ul></div><div class="formbody"><div class="formtitle"><span>基本信息</span></div><ul class="forminfo"><li><label>用户名</label><input name="userName" type="text"class="dfinput" /><i>用户名不能超过30个字符</i></li><li><label>真实姓名</label><input name="realName" type="text"class="dfinput" /></li><li><label>密码</label><input name="password" type="password"class="dfinput" /></li><li><label>确认密码</label><input name="confirmPassword"type="password" class="dfinput" /></li><li><label>电话</label><input name="phone" type="text"class="dfinput" /><i></i></li><li><label>邮箱</label><input name="email" type="text"class="dfinput" /><i></i></li><li><label>分配角色</label><div style="height: 32px;line-height: 32px;"><c:forEach items="${roles}" var="role"><input type="checkbox" value="${role.roleId }" name="roles"> ${role.roleName }&nbsp;&nbsp;</c:forEach></div></li><li><label>&nbsp;</label><input name="" type="submit"class="btn" value="确认保存" /></li></ul></div><div style="display: none"><script src='http://v7.cnzz.com/stat.php?id=155540&web_id=155540'language='JavaScript' charset='gb2312'></script></div>
</body>
</html>

提交数据

因为表单提交的数据有分配的角色信息,单独一个User对象并不能接收所有的数据。所以我们需要创建一个Dao对象,来保存数据。

Dao层


UserDto

package com.yjn.dto;
import java.util.List;
import com.yjn.pojo.Role;
import com.yjn.pojo.User;
public class UserDto {//用户信息public User user;//关联分配的角色信息public List<Integer> roles;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public List<Integer> getRoles() {return roles;}public void setRoles(List<Integer> roles) {this.roles = roles;}
}

数据传输对象,即Data Transfer Object,简称DTO。 一个为了减少方法调用次数而在进程间传输数据的对象
表单域name值设置,及提交地址:

        <form action="/user/saveOrUpdate"><ul class="forminfo"><li><label>账号</label><input name="user.userName" type="text"class="dfinput" /><i>账号不能超过30个字符</i></li><li><label>姓名</label><input name="user.realName" type="text"class="dfinput" /></li><li><label>密码</label><input name="user.password" type="password"class="dfinput" /></li><li><label>确认密码</label><input name="confirmPassword"type="password" class="dfinput" /></li><li><label>电话</label><input name="user.phone" type="text"class="dfinput" /><i></i></li><li><label>邮箱</label><input name="user.email" type="text"class="dfinput" /><i></i></li><li><label>分配角色</label><div style="height: 32px;line-height: 32px;"><c:forEach items="${roles }" var="role"><input type="checkbox" value="${role.roleId }" name="roles"> ${role.roleName }&nbsp;&nbsp;</c:forEach></div></li><li><label>&nbsp;</label><input name="" type="submit"class="btn" value="确认保存" /></li></ul></form>

控制层接收数据

UserController

    /*** 完成添加或修改操作* @param id* @return* @throws Exception */@RequestMapping("/saveOrUpdate")public String saveOrUpdate(UserDto userDto) throws Exception{userService.saveOrUpdate(userDto);return "redirect:/user/query";}

service接口

    /*** 保存或修改用户数据* @param userDto*/public void saveOrUpdate(UserDto userDto)throws Exception;

service接口实现类

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

添加inserUserIdAndRoleId实现

自动生成key
设置UserMapper.xml文件中的insert标签

接口定义

UserMapper

public interface UserMapper {long countByExample(UserExample example);int deleteByExample(UserExample example);int deleteByPrimaryKey(Integer userId);int insert(User record);int insertSelective(User record);List<User> selectByExample(UserExample example);User selectByPrimaryKey(Integer userId);int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);int updateByExample(@Param("record") User record, @Param("example") UserExample example);int updateByPrimaryKeySelective(User record);int updateByPrimaryKey(User record);void insertUserIdAndRoleId(Integer userId, Integer roleId);
}

在UserMapper.xml中添加

  <insert id="insertUserIdAndRoleId">insert into t_user_role(user_id,role_id)values(#{param1},#{param2})</insert>

测试


添加成功

用户和角色的关联关系也添加成功

SSM项目实战之十一:用户信息的添加相关推荐

  1. 项目实战-----Python编写疫苗信息管理系统

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_43425784/art ...

  2. 为用户信息修改添加审核功能

    最近做了一个功能为用户信息修改添加审核功能,审核通过以后修改才会生效.一般的做法是修改的时候添加一条记录,审核通过以后再把修改记录更新到原始的记录中. 尝试了一种新的方式,用一张表记录更新的字段和值, ...

  3. SSM项目实战之二十一:客户信息修改

    客户信息修改 实现步骤 customer.jsp CustomerServiceImpl CustomerMapper.xml customerUpdate.jsp CustomerControlle ...

  4. SSM项目实战:酒店管理系统

    使用的技术栈:Spring+SpringMVC+mybatis+Mysql+layui+Maven Maven 项目结构.项目配置项为: 服务器:apache-tomcat-9.0.0.M26 (必须 ...

  5. SSM项目实战(SSM商城 Maven项目 商品、评论、回复)

    目录 前言 主要功能 开发环境 数据库设计 项目架构 项目技术介绍 运行效果展示 配置文件 项目源代码 总结 前言 SSM框架(spring+springMVC+mybatis),是目前比较主流的Ja ...

  6. SSM项目实战【从 0 到 1】:个人博客

    文章目录 前言 一.项目简介 二.项目技术栈 三.准备工作 1.Spring Boot 项目创建 2.mybatis 配置 3.数据库创建 四.基本框架搭建 1.实体层(model) 2.控制器层(c ...

  7. Flask项目实战——6—(前台用户模型、前台登录注册、图形验证码、手机短信验证码、添加表单验证短信验证码请求)

    1.前台用户模型 前台用户模型定义 创建前台模型文件 apps/front/models.py # -*- encoding: utf-8 -*- """ @File : ...

  8. Django项目实战——8—(判断用户是否登录并返回JSON、Django发送邮件的配置、生成邮箱验证链接、验证邮箱后端逻辑)

    1.判断用户是否登录并返回JSON 重要提示: 只有用户登录时才能让其绑定邮箱. 此时前后端交互的数据类型是JSON,所以需要判断用户是否登录并返回JSON给用户. 方案一: 使用Django用户认证 ...

  9. SSM项目实战之十三:删除用户

    删除用户 前言 提交删除请求 处理删除请求 控制器 service实现类 测试 前言 本文要实现的功能是删除用户,本来用户是不用真的删除的,实际中我们会给用户表添加一个是否删除的字段,删除数据只需要修 ...

  10. 【struts2+hibernate+spring项目实战】实现用户登录功能(ssh)

    一.概述 从今天才开始有时间来总结总结以前自己练习的一些东西,希望总结出来对以后可以更加便捷的来学习,也希望可以帮助到正需要这些东西的同行人,一起学习,共同进步. 二. 登录功能总结 2.1.登录功能 ...

最新文章

  1. 为什么大多数IOC容器使用ApplicationContext,而不用BeanFactory
  2. 赵劲松:预知潜在风险,做化工安全科技创新的引领者
  3. WIn10+Anaconda 环境下安装 PyTorch 避坑指南
  4. 【数据结构作业—01】用单循环链表解决约瑟夫问题
  5. 【斜率优化】玩具装箱(luogu 3195)
  6. 将模板方法模式应用到kmeans聚类算法
  7. javaweb jsp页面无法解析${message}
  8. RBSP、SODB、EBSP三者的区别和联系 SPS: sequence parameter sets
  9. 使用jxl来读取Excel中的数据
  10. 【IT】关于Code打卡机时遇到的问题及解决
  11. 32位CentOS安装cacti
  12. MySQL 第二次练习(源码安装、数据库和表的建立)
  13. 调用iphone客户端进行授权发微博的方法--使用友盟组件
  14. java 算法递归案例_JAVA 几个递归算法实例
  15. Linux下的日志维护技巧
  16. kaios好用吗_如何评价Kai Os?
  17. 仿vista桌面小工具
  18. 【Ps2D】将PS图层导入Unity的插件
  19. c语言论坛编程,[原创]了解c语言
  20. Netty 实现百万连接的难点和优化点

热门文章

  1. 服务器虚拟化发展的趋势,2013年服务器虚拟化九大发展趋势
  2. RK987A键盘说明书(自用)
  3. 短视频系统+购物直播APP开发方案
  4. SnakeYAML配置文件解析器
  5. canvas实现数字雨
  6. 农业物联网行业调研报告 - 市场现状分析与发展前景预测
  7. IOS根据经纬度算距离
  8. 风尚云网学习-input属性总结
  9. java中英文切换,Java实现多语言切换
  10. 学习日记-wps表格 工资条的制作