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

Sådan håndterer du undtagelser, mens du tilføjer dublet brugernavn til en database i forårets mvc-applikation

Du håndterer kun MySQLIintegrityConstraintViolationException, ikke andre undtagelser:NestedServletException og DuplicateKeyException, og du får derfor stacktrace, og din try/catch virker ikke.

BTW, hvorfor ikke bare oprette en ekstra metode til at kontrollere, om brugernavnet allerede er til stede, og hvis ja, så vis fejlmeddelelse ellers tilføje bruger.

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. Tjek om en streng indeholder tal

  2. PostgreSQL:ved hjælp af en beregnet kolonne i samme forespørgsel

  3. adgang nægtet for indlæsning af data i MySQL

  4. Bestilling af strengene under sammenkædning i orakel