|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原来是这样写的
@PostMapping("/login")
public Result login(@Pattern(regexp = "^\\S{5,16}$")String username, @Pattern(regexp = "^\\S{5,16}")String password) {
User loginUser = userService.findByUserName(username);
if(userService.findByUserName(username) == null) {
return Result.error("用户不存在");
}
if(Md5Util.getMD5String(password).equals(loginUser.getPassword())){
Map<String, Object> claims = new HashMap<>();
claims.put("id", loginUser.getId());
claims.put("username", loginUser.getUsername());
String token = JwtUtil.genToken(claims);
return Result.success(token);
但是我想把‘User loginUser = userService.findByUserName(username);’这一段省掉
然后‘if(Md5Util.getMD5String(password).equals(loginUser.getPassword())){’这一段改成'if(Md5Util.getMD5String(password).equals(userService.findByUserName(username).getPassword())){'
请问这样可以吗?
您的修改是可行的,不会有语法错误,但是这样的代码逻辑可能会导致重复查询数据库,影响性能。
在原来的代码中,您先通过`userService.findByUserName(username)`方法查询到了一个`User`对象,并将其赋值给`loginUser`变量。然后在接下来的判断中,可以直接使用`loginUser`对象的属性进行比较操作。
而您的修改中,每次判断时都会重新执行`userService.findByUserName(username)`方法来获取`User`对象,这样就可能会导致多次查询数据库,增加了不必要的开销。
所以,建议您尽量保持原来的代码逻辑,先将查询结果保存在一个变量中,避免重复查询数据库。这样不仅可以提高性能,还能使代码更加清晰易懂。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|