簡體   English   中英

使用休眠模式檢查在注冊時我數據庫中是否有電子郵件

[英]check if an email in my database while sign up, using hibernate

我正在對IHM進行編程以注冊用戶,我需要檢查該用戶是否已經在數據庫(mysql)中,並通過其電子郵件進行檢查。 你能幫我嗎。 我現在可以保存我的用戶,但是如何通過他的電子郵件檢查該用戶

這是我的刀層課:

public class UserDaoMysql implements UserDao {

    private Session session;


    private void openSession(){
        SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
        session = sessionFactory.openSession();
        session.beginTransaction();
    }

    private void closeSession(){
        session.getTransaction().commit();
        session.close();
    }

    public void insert(User user) {

        if(checkEmail(user)){

        openSession();
        User p = new User(user.getName(), user.getEmail(), user.getPassword());
        session.save(p);
        System.out.println("sauvegarde reussi");
        closeSession();

        }



    }

    public boolean checkEmail(User user){


        return true;
    }

}

這是我的用戶bean:

@ManagedBean(name="user")
public class User {

    private int id;
    private String name;
    private String email;
    private String password;
    private String confirmationPass;
//  private image 


    public User() {
        super();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


    public String getConfirmationPass() {
        return confirmationPass;
    }

    public void setConfirmationPass(String confirmationPass) {
        this.confirmationPass = confirmationPass;
    }


    public User(int id, String name, String email, String password,
            String confirmationPass) {
        super();
        this.id = id;
        this.name = name;
        this.email = email;
        this.password = password;
        this.confirmationPass = confirmationPass;
    }

    public User(int id, String name, String email, String password) {
        super();
        this.id = id;
        this.name = name;
        this.email = email;
        this.password = password;
    }

    public User(String name, String email, String password) {
        super();
        this.name = name;
        this.email = email;
        this.password = password;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", Name=" + name + ", email=" + email
                + ", password=" + password + "]";
    }

    public void save(){


        UserBusiness userBusiness = new UserBusinessImp();
        userBusiness.add(new User(name, email,password));

    }

}

我的數據庫中有一個表用戶。

謝謝你的幫助

我將為此使用NamedQuery。 User實體中定義命名查詢,如下所示:

...
@NamedQueries({
    @NamedQuery(name = "User.findByEmail", 
query = "SELECT u FROM User u WHERE u.email = :email")})
@ManagedBean(name="user")
public class User {
...

然后將這樣的方法添加到您的DAO中

public List<User> getUsersByEmail(String email){
    openSession();
    Session session;
    Query query = session.getNamedQuery("User.findByEmail");
    query.setString("email", email);
    Lis<Users> users = query.list();
    closeSession();
    return users;
}

此方法稍微通用一些,您可以使其更具體,僅返回user數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM