1. 注册请求
@PostMapping("/register") public ModelAndView register(HttpServletRequest req, Register registerInfo) { System.out.println(registerInfo); try { UserService userService = AppConfig.context.getBean(UserService.class); User user = userService.register(registerInfo); if (user == null) { return new ModelAndView("/register.html", Map.of("errorMsg", "邮件已注册,请登录或者重新注册!")); } req.getSession().setAttribute("user", user); req.getSession().setMaxInactiveInterval(1000); ModelAndView mv = new ModelAndView("/index.html", Map.of("user", user)); return mv; }catch (SQLException sql){ sql.printStackTrace(); return new ModelAndView("/register.html", Map.of("errorMsg", "注册异常,请稍后重试!")); }catch (RuntimeException e){ String msg=e.getMessage(); e.printStackTrace(); return new ModelAndView("/register.html", Map.of("errorMsg", msg)); }catch (Exception e){ e.printStackTrace(); return new ModelAndView("/register.html", Map.of("errorMsg", "注册异常,请稍后重试!")); } }
2. 注册
@MetricTime("register") @Transactional public User register(Register registerInfo) throws SQLException{ System.out.println("开始注册"); String email=registerInfo.getEmail(); String name=registerInfo.getUsername(); String password=registerInfo.getPassword(); TransactionStatus tx=null; tx=this.txManager.getTransaction(new DefaultTransactionDefinition()); KeyHolder holder=new GeneratedKeyHolder(); if(getUserFromDB(email)!=null){ throw new RuntimeException(email+" exists. please go to [sign in]"); } if(1!=jdbcTemplate.update( (conn)-> { PreparedStatement ps=conn.prepareStatement( "insert into user(name,email,password) values(?,?,?)", Statement.RETURN_GENERATED_KEYS); ps.setObject(1,name); ps.setObject(2,email); ps.setObject(3,password); return ps; }, holder )){ throw new RuntimeException("Insert failed"); } //添加注册积分 this.addBonus(holder.getKey().longValue()); //提交事务 this.txManager.commit(tx); return new User(holder.getKey().longValue(),email,password,name); }
3. 添加注册积分
/** * 添加积分 * @param studentId */ @Transactional public void addBonus(long studentId){ int registerBouns=5; TransactionStatus tx=null; tx=this.txManager.getTransaction(new DefaultTransactionDefinition()); if(1!=jdbcTemplate.update("insert into bonus(studentId,bonus) value(?,?)",studentId,registerBouns)){ throw new RuntimeException("add bonus failed from userid= "+studentId); }; this.txManager.commit(tx); }
哎呀,写错了,不要参考
Sign in to make a reply
净净一隅
1. 注册请求
@PostMapping("/register")
public ModelAndView register(HttpServletRequest req, Register registerInfo) {
System.out.println(registerInfo);
try {
UserService userService = AppConfig.context.getBean(UserService.class);
User user = userService.register(registerInfo);
if (user == null) {
return new ModelAndView("/register.html", Map.of("errorMsg", "邮件已注册,请登录或者重新注册!"));
}
req.getSession().setAttribute("user", user);
req.getSession().setMaxInactiveInterval(1000);
ModelAndView mv = new ModelAndView("/index.html", Map.of("user", user));
return mv;
}catch (SQLException sql){
sql.printStackTrace();
return new ModelAndView("/register.html", Map.of("errorMsg", "注册异常,请稍后重试!"));
}catch (RuntimeException e){
String msg=e.getMessage();
e.printStackTrace();
return new ModelAndView("/register.html", Map.of("errorMsg", msg));
}catch (Exception e){
e.printStackTrace();
return new ModelAndView("/register.html", Map.of("errorMsg", "注册异常,请稍后重试!"));
}
}
2. 注册
@MetricTime("register")
@Transactional
public User register(Register registerInfo) throws SQLException{
System.out.println("开始注册");
String email=registerInfo.getEmail();
String name=registerInfo.getUsername();
String password=registerInfo.getPassword();
TransactionStatus tx=null;
tx=this.txManager.getTransaction(new DefaultTransactionDefinition());
KeyHolder holder=new GeneratedKeyHolder();
if(getUserFromDB(email)!=null){
throw new RuntimeException(email+" exists. please go to [sign in]");
}
if(1!=jdbcTemplate.update(
(conn)-> {
PreparedStatement ps=conn.prepareStatement(
"insert into user(name,email,password) values(?,?,?)", Statement.RETURN_GENERATED_KEYS);
ps.setObject(1,name);
ps.setObject(2,email);
ps.setObject(3,password);
return ps;
},
holder
)){
throw new RuntimeException("Insert failed");
}
//添加注册积分
this.addBonus(holder.getKey().longValue());
//提交事务
this.txManager.commit(tx);
return new User(holder.getKey().longValue(),email,password,name);
}
3. 添加注册积分
/**
* 添加积分
* @param studentId
*/
@Transactional
public void addBonus(long studentId){
int registerBouns=5;
TransactionStatus tx=null;
tx=this.txManager.getTransaction(new DefaultTransactionDefinition());
if(1!=jdbcTemplate.update("insert into bonus(studentId,bonus) value(?,?)",studentId,registerBouns)){
throw new RuntimeException("add bonus failed from userid= "+studentId);
};
this.txManager.commit(tx);
}