Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obsłużyć wyjątek podczas dodawania zduplikowanej nazwy użytkownika do bazy danych w aplikacji spring mvc?

Obsługujesz tylko MySQLIntegrityConstraintViolationException, a nie inne wyjątki:NestedServletException i DuplicateKeyException, a zatem otrzymujesz ślad stosu i próba/chwytanie nie działa.

BTW, dlaczego po prostu nie stworzyć dodatkowej metody, aby sprawdzić, czy nazwa użytkownika jest już obecna, a jeśli tak, wyświetl komunikat o błędzie, w przeciwnym razie dodaj użytkownika.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie Select Query w pętli while w php

  2. mysqli wiążą zmienne

  3. Jak uzyskać i uporządkować najtrafniejsze wpisy z bazy danych z wieloma słowami kluczowymi Laravel 5

  4. Flask-Sqlalchemy:zapytania DB nie zwracają nowych danych

  5. mysql wybierz odrębny, ale najnowszy wiersz