牛骨文教育服务平台(让学习变的简单)
博文笔记

在具体项目中实现mysql数据库某表数据插入另一表中

创建时间:2018-04-11 投稿人: 浏览次数:523

问题描述:

登录成功后,主页面左侧菜单栏需要roleId来实现具体需求,而注册时需要给注册用户默认角色ID,roleId=2,想实现的需求是若注册成功即给定用户ID,而项目中的困难是多表并不能关联插入,只能是在user表中获取到userId和roleId,然后再插入role_user表中,这样就能获取到用户角色。下面来看看具体代码

首先是mapper

<!-- 默认角色ID给定到role_user表 -->
	<insert id="ruId"  parameterType="RoleUser">
		INSERT INTO 
		role_user (`roleId`,`userId`) 
		SELECT `userRoleId`,`userId` FROM `user`
		WHERE user.phone = #{phone}
	</insert>
	
	<!-- 注册用户 -->
    <insert id="rinsert" parameterType="User">
        insert into 
        <include refid="tableName"></include>
		(
		<include refid="Field"></include>
		) values (
		<include refid="FieldValue"></include>
		)
    </insert>

service层

/**
     * 新增用户
     *
     * @param user 用户信息
     * @return
     */
    @Transactional
    public Result insert(User user) {
        user.setCreateAt(new Date());
        user.setStatus(UserStatus.启用);

        Result result = new Result();
        
        if (!checkUserName(user).isSuccess()) {
            result.setMessage("用户名重复");
            return result;
        }
        
        result.setSuccess(userMapper.insert(user) > 0);
        
        return result;
    }
    /**
     * 用户注册
     * @param user 用户信息
     * @return
     */
    @Transactional
    public Result rinsert(User user,String phone) {
        
        Result result = new Result();
        if (!checkUserName(user).isSuccess()) {
            result.setMessage("用户名重复");
            return result;
        }
        if (!checkUserPhone(user).isSuccess()) {
            result.setMessage("手机号重复");
            return result;
        }
        result.setSuccess(userMapper.rinsert(user) > 0);
		if( phone == user.getPhone()) {
			ruId(phone);
		}
        System.err.println(result);
    	return result;
    }
    
    /**
     * 根据手机号获取userId和userRoleId(即role_user表里面的roleId)并将其插入到role_user表
     * @param roleUser
     * @return
     */
    @Transactional
    public Result ruId(String phone) {
    	Result res = new Result();
    	
    	 res.setSuccess( userMapper.ruId(phone) > 0);
    	return res;
    }

controller层
//注册新用户
    @RequestMapping(value = "/radd", method = RequestMethod.POST)
    @ResponseBody
    public Result register(@RequestBody User user) {
    	System.err.println(user);
    	Result result = new Result();
    	String e_name = "e_";
	    // 系统为用户生成一个9位数帐号
	    for (int i = 0; i < 9; i++) {
	        e_name += randomChar();
	    }
	    // 获取表单参数
	    String checkCode = user.getPhoneCode();
	    if (checkCode.equals(session.getAttribute(Const.SMS_CODE))) {
	        user.setRealName(e_name);
	        user.setCreateAt(new Date());
	        user.setStatus(UserStatus.启用);
	        user.setUserRoleId(2);//默认用户角色为普通用户角色
	        result = userService.rinsert(user,user.getPhone());
	        System.err.println(result);
	        return result;
	    }else {
	        result.setMessage("验证码错误"); 
	}
    return result;
    }
至此,实现想要的功能,先这样记录吧。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。