sql >> Database >  >> RDS >> Mysql

Hoe om te gaan met uitzonderingen tijdens het toevoegen van dubbele gebruikersnaam aan een database in de lente mvc-toepassing

U behandelt alleen MySQLIntegrityConstraintViolationException en geen andere uitzonderingen:NestedServletException en DuplicateKeyException en daarom krijgt u stacktrace en uw try/catch werkt niet.

Trouwens, waarom niet gewoon een extra methode maken om te controleren of de gebruikersnaam al aanwezig is en zo ja, geef dan een foutmelding weer, voeg anders een gebruiker toe.

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


  1. Aandacht besteden aan schattingen

  2. SQL-query om rijen te vinden met ten minste één van de opgegeven waarden

  3. SQLite-weergave maken

  4. Hoe subcategorieën uit de geselecteerde categorie selecteren met behulp van een geneste functie in PHP?