在具体项目中实现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中高访问量高并发的问题的一部分解决方案
