sql >> Base de Datos >  >> RDS >> Mysql

Cómo manejar la excepción al agregar un nombre de usuario duplicado a una base de datos en la aplicación spring mvc

Está manejando solo MySQLIntegrityConstraintViolationException, no otras excepciones:NestedServletException y DuplicateKeyException y, por lo tanto, está obteniendo stacktrace y su intento/captura no funciona.

Por cierto, ¿por qué no simplemente crear un método adicional para verificar si el nombre de usuario ya está presente y, en caso afirmativo, mostrar un mensaje de error; de lo contrario, agregue el usuario?

class UserRepositoryImpl implements UserRepository{
    //.....
    public int isUsernameExist(String username){
        String sql = "SELECT COUNT(*) FROM users WHERE username=?";
        return jdbcTemplate.queryForObject(sql, new Object[] { username }, String.class);
    }
    //....
}

@RequestMapping(value="/register", method=RequestMethod.POST)
public String processRegisterUser(@ModelAttribute("user") User user, BindingResult result){
    int status = userRepository.isUserExist(user.getUsername());
    if(status==1){
        //Username exist... redirect and display error msg.
    } else {
        userRepository.addUser(user);
    }
    //.....
}