Mysql
 sql >> Database >  >> RDS >> Mysql

Come gestire l'eccezione durante l'aggiunta di un nome utente duplicato a un database nell'applicazione mvc primaverile

Stai gestendo solo MySQLIntegrityConstraintViolationException non altre eccezioni:NestedServletException e DuplicateKeyException e quindi stai ricevendo stacktrace e il tuo try/catch non funziona.

A proposito, perché non creare semplicemente un metodo aggiuntivo per verificare se il nome utente è già presente e, in caso affermativo, visualizzare un messaggio di errore, altrimenti aggiungere utente.

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);
    }
    //.....
}