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

好好编程-物流项目10【用户管理-查询和添加】

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

  在实现登录功能之前我们来实现下用户管理。

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

初学者应该对这张图片铭记于心~

用户管理

1.查询用户信息

  将用户表中的数据展示在页面中

1.1 用户业务逻辑层

接口定义

代码语言:javascript
复制
package com.bobo.service;

import java.util.List;

import com.bobo.pojo.User;

/**
 * 用户信息
 * @author 波波烤鸭
 *
 * dengpbs@163.com
 */
public interface IUserService {

	/**
	 * 根据条件查询用户信息
	 * @param user
	 * @return
	 */
	public List<User> query(User user);
	
	/**
	 * 添加用户
	 * @param user
	 * @throws Exception
	 */
	public void addUser(User user) throws Exception;
	
	/**
	 * 修改用户
	 * @param user
	 * @throws Exception
	 */
	public void updateUser(User user)throws Exception;
	
	/**
	 * 删除用户
	 * @param id
	 * @throws Exception
	 */
	public void deleteUser(int id)throws Exception;
}

接口实现

代码语言:javascript
复制
package com.bobo.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.bobo.mapper.UserMapper;
import com.bobo.pojo.User;
import com.bobo.pojo.UserExample;
import com.bobo.service.IUserService;

@Service
public class UserServiceImpl implements IUserService {
	
	@Resource
	private UserMapper userMapper;

	@Override
	public List<User> query(User user) {
		UserExample example = new UserExample();
		// ---
		return userMapper.selectByExample(example);
	}

	@Override
	public void addUser(User user) throws Exception {
		userMapper.insertSelective(user);

	}

	@Override
	public void updateUser(User user) throws Exception {
		// TODO Auto-generated method stub
		userMapper.updateByPrimaryKey(user);
	}

	@Override
	public void deleteUser(int id) throws Exception {
		// TODO Auto-generated method stub
		userMapper.deleteByPrimaryKey(id);
	}
}

1.2 用户控制层

代码语言:javascript
复制
/**
 * 角色 控制层
 * @author 波波烤鸭
 *
 * dengpbs@163.com
 */
@Controller
@RequestMapping("/user")
public class UserController {
	
	@Resource
	private IUserService userService;

	@RequestMapping("/query")
	public String query(User user,Model model){
		List<User> list = userService.query(user);
		model.addAttribute("list", list);
		return "user/user";
	}
}

1.3 用户管理界面

  修改left.jsp中的代码

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

因为jsp文件下文件越来越多,所以分下目录

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

RoleController跳转页调整下

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

1.4 展示数据

准备一条测试数据

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

因为logistics-manager-service的代码修改了所以需要install下,别忘了,如果提示报错就在来一次,如果还报错请检查。

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

启动访问

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

访问成功!

2.添加用户信息

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

2.1控制层添加跳转的方法   更新和修改我们放在一个jsp页面进行,添加和修改都需要分配角色。 service层

代码语言:javascript
复制
/**
 * 获取添加或者修改用户需要的数据
 * 添加
 *    获取所有的角色信息
 * 修改
 *    获取所有的角色信息及根据id查询的用户信息
 * @param id
 * @return
 */
public void getUpdateUserInfo(Integer id,Model model);	
代码语言:javascript
复制
@Resource
private RoleMapper roleMapper;
@Override
public void getUpdateUserInfo(Integer id,Model model) {
	RoleExample roleExample = new RoleExample();
	List<Role> roles = roleMapper.selectByExample(roleExample );
	model.addAttribute("roles", roles);
}

控制层

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

2.2点击添加完成跳转

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

userUpdate.jsp使用form.html的代码

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

访问后样式失效:

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

2.3修改添加页面 效果

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

代码

代码语言:javascript
复制
<%@ 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="roleIds"> ${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>

验证此处没有加,可自行加上~ 2.4提交数据   因为表单提交的数据有分配的角色信息,单独一个User对象并不能接收所有的数据。所以我们需要创建一个Dto对象,来保存数据。

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

数据传输对象,即Data Transfer Object,简称DTO。 一个为了减少方法调用次数而在进程间传输数据的对象

表单域name值设置,及提交地址:

代码语言:javascript
复制
<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="roleIds"> ${role.roleName }&nbsp;&nbsp;
	    	</c:forEach>
	    </div>
	   
    </li>
	<li><label>&nbsp;</label>
		<input name="" type="submit"
		class="btn" value="确认保存" /></li>
	</ul>
</form>

控制层接收数据:

代码语言:javascript
复制
/**
 * 进入添加或者修改页面
 * @param id
 * @return
 * @throws Exception 
 */
@RequestMapping("/saveOrUpdate")
public String saveOrUpdate(UserDto userDto) throws Exception{
	userService.saveOrUpdate(userDto);
	return "redirect:/user/query";
}

service接口

代码语言:javascript
复制
/**
 * 保存或修改用户数据
 * @param userDto
 */
public void saveOrUpdate(UserDto userDto)throws Exception;

接口实现

代码语言: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存在,说明是更新
	}else{
		// 不存在id说明是添加数据
		// 先添加用户数据 获取生成的userId
		userMapper.insert(user);
		// 再保存用户和角色的对应关系,在一个事务中处理
		if(roles!=null && roles.size() > 0){
			for (Integer roleId : roles) {
				userMapper.inserUserIdAndRoleId(user.getUserId(),roleId);
			}
		}
		
	}
}

自动生成key 设置insert对应的插入语句。

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

添加inserUserIdAndRoleId实现 接口定义

代码语言:javascript
复制
void inserUserIdAndRoleId(Integer userId, Integer roleId);
在这里插入图片描述
在这里插入图片描述

添加该sql语句在UserMapper.xml文件中

代码语言:javascript
复制
 <insert id="inserUserIdAndRoleId">
 	insert into t_user_role(user_id,role_id)values(#{param1},#{param2})
 </insert>

测试

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

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

篇幅原因修改和删除下篇文章介绍~

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用户管理
    • 1.查询用户信息
      • 1.1 用户业务逻辑层
      • 1.2 用户控制层
      • 1.3 用户管理界面
      • 1.4 展示数据
    • 2.添加用户信息
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档