sql >> Databasteknik >  >> RDS >> Mysql

Hur man hanterar undantag medan du lägger till dubblett av användarnamn till en databas i våren mvc-applikation

Du hanterar bara MySQLIintegrityConstraintViolationException, inte andra undantag:NestedServletException och DuplicateKeyException och därför får du stacktrace och din try/catch fungerar inte.

BTW, varför inte helt enkelt skapa en extra metod för att kontrollera om användarnamnet redan finns och om ja, visa felmeddelande annars lägg till användare.

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. MYSQL - Flatten Table Query

  2. Tillåt nummer att börja med NOLL när det lagras i mysql heltalsfält

  3. MySQL Långsamt när du går med. Något sätt att snabba upp

  4. postgres - välj * från befintlig tabell - psql säger att tabellen inte existerar