在具体项目中实现mysql数据库某表数据插入另一表中
问题描述:
登录成功后,主页面左侧菜单栏需要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; }至此,实现想要的功能,先这样记录吧。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: java系统高并发的解决方案
- 下一篇: JAVA中高访问量高并发的问题的一部分解决方案