gpt4 book ai didi

mysql - 如何确保帐户的唯一性

转载 作者:行者123 更新时间:2023-11-29 09:37:07 25 4
gpt4 key购买 nike

我正在用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

最佳答案

考虑到您正在使用Spring-Boot,myBatis,您可以在注册用户之前对存储库进行额外的调用以检查用户是否存在

@Select("select * from user where account= #{accountVar}")
User findById(@Param("accountVar") String accountName);

如果您存在具有相同 accountName 的用户,您应该抛出自定义异常和/或响应消息,提及用户已存在或类似内容

记住要遵守 Spring Boot 或者基于 HTTP 的标准来从端点进行响应

  • 如果成功,您应该返回 200 OK 以及消息或无论最适合您的情况
  • 如果发生故障/异常,您应该返回 400 Bad Request 以及消息

关于mysql - 如何确保帐户的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57355835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com