我正在使用spring-boot以及mysql和mybatis开发一个帐户系统。
我在表字段上使用了唯一索引,当收到新请求时,我使用了try catch来处理它。
我认为这不好。
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("query/{id}")
public String query(@PathVariable int id){
return userService.query(id).toString();
}
@RequestMapping("insert")
public String addUser(){
User user = new User();
user.setAccount("aaa");
user.setPassword("password");
try {
userService.insert(user);
}catch (Exception e){
if (e.getLocalizedMessage().contains("Duplicate entry")){
// Duplicate entry index
user.setId(-1);
}else{
// other Exception
user.setId(-2);
}
}
return user.toString();
}
}
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`account` varchar(255) NOT NULL DEFAULT '',
`password` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `iacc` (`account`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8
答案 0 :(得分:1)
考虑到您使用的是Spring-Boot,myBatis,可以在注册用户之前对存储库进行其他调用以检查用户是否存在
'data.frame': 3 obs. of 3 variables:
$ QS201EW...group: Factor w/ 34760 levels "","Area",..: 32848 2 3
$ X : Factor w/ 1849 levels "","1001","1002",
$ X.1 : Factor w/ 2462 levels "","100"
如果您的用户具有相同的accountName,则应引发Customize Exception和/或响应消息中提到用户已存在或类似的内容
记住要遵循Spring Boot或基于HTTP的标准来响应端点