2014-01-23 3 views
0

사용자 이름으로 가용성을 확인해야합니다. 즉, 각 사용자 이름은 고유해야하며 이미 존재하는 경우 "이 사용자 이름은 이미 사용 중입니다"라는 메시지를 표시해야합니다. 동일한 사용자 이름. 자동 (쿼리 생성 후 메시지 표시) 또는 사용 가능 여부를 확인하는 단추를 작성한 다음 메시지를 표시 할 수 있습니다. 이 간단한 절차에 대해 명확한 생각이 없습니다. 이 경우 내가해야 할 일은 무엇입니까? 소스 코드 그래서 같다 :사용자 등록에서 데이터베이스의 고유 한 값 제약 조건 확인

Person 클래스

@Entity 
@Table(name="person") 
public class Person { 

    @Id 
    @GeneratedValue(strategy=GenerationType.SEQUENCE) 
    @Column(name="id") 
    private int id; 

    @Column(name="firtsname") 
    private String first_name; 

    @Column(name="lastname") 
    private String last_name; 

    @Column(name="username", unique=true) 
    private String user_name; 

    @Column(name="password") 
    private String password; 

    // Getters and Setters 
} 

PersonDao >> PersonDaoImpl

@Repository("personDao") 
public class PersonDaoImpl implements PersonDao { 

@Autowired 
private SessionFactory sessionFactory; 

@Override 
public void createPerson(Person person) { 
    sessionFactory.getCurrentSession().saveOrUpdate(person); 

} 

@Override 
public Person updatePerson(int id) { 
    return (Person) sessionFactory.getCurrentSession().get(Person.class, id); 

} 

@Override 
public void deletePerson(int id) { 
    sessionFactory.getCurrentSession().createQuery("DELETE FROM Person WHERE id="+id).executeUpdate(); 

} 

@Override 
@SuppressWarnings("unchecked") 
public List<Person> listAllPersons() { 
    return (List<Person>) sessionFactory.getCurrentSession().createCriteria(Person.class).list(); 

} 

} 

등록 신청서 (registration.jsp)

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
<form:form method="POST" action="/userform/saveUser.html"> 
    <p> 
     <form:input type="hidden" readonly="true" path="id" /> 
    </p> 
    <p> 
     <form:label path="first_name" >First name:</form:label> 
     <form:input path="first_name" /> 
    </p> 
    <p> 
     <form:label path="last_name">Last name:</form:label> 
     <form:input path="last_name" /> 
    </p> 
    <p> 
     <form:label path="user_name">Username:</form:label> 
     <form:input path="user_name" /> 
    </p> 
    <p> 
     <form:label path="password">Password:</form:label> 
     <form:input path="password" /> 
    </p> 
    <p> 
     <button type="reset" value="Reset">Reset</button> 
     <button type="submit" value="Save">Save</button> 
    </p> 

</form:form> 
</body> 
</html> 

고맙습니다.

답변

0
SELECT id FROM table_name WHERE id = "user_key" 

선택한 사용자 이름을 반환하면 이미 확인한 것입니다. 일단 레이아웃 기능을 사용하면 "이 사용자 이름이 사용되었습니다"라는 메시지가 표시 될 수 있습니다. 귀하의 데이터베이스에 idunique을 만들면 또한 좋을 것입니다. 그게 다야.

추신 : 귀하의 ID 셀이 unique이면 INSERT을 작성하고 예외를 잡을 수 있습니다. Thats 두 번째 솔루션입니다.

1

삽입을 시도하고 오류를 처리하십시오. 다른 방법은 타이밍 창 문제에 취약합니다.

+0

다른 솔루션에도 하나의 선택 및 삽입이 포함되어 있습니다. 일반적으로 선택이 무거운 작업으로 간주됩니다. 선택시 절약 할 수 있습니다. – nightograph

+0

@EJP 답변이 좋게 들립니다. 소스 코드로 설명해 주시겠습니까? 내 사용자 등록 양식 (registrarion.jsp)에서 ... 데이터베이스에 같은 이름의 사용자 이름이 이미 있는지 확인할 수 있습니까? – user3043914

관련 문제