首页 > 解决方案 > 在 Spring MVC 休眠中验证用户名和密码

问题描述

我有这个 hibernateTemplate 代码来验证用户名和密码,但是这个代码在 MYSQL 中运行良好,但在 Oracle 中失败,并且在 DAO 类中显示一些问题,因为它创建了表但没有保存值。对于项目,有必要使用甲骨文

package com.infotech.dao.impl;

    import java.util.List;

    import org.hibernate.criterion.DetachedCriteria;
    import org.hibernate.criterion.Restrictions;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.orm.hibernate4.HibernateTemplate;
    import org.springframework.stereotype.Repository;

    import com.infotech.dao.StudentDAO;
    import com.infotech.model.Student;

    @Repository("studentDAO")
    public class StudentDAOImpl implements StudentDAO {

        @Autowired
        private HibernateTemplate hibernateTemplate;

        public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
            this.hibernateTemplate = hibernateTemplate;
        }
        public HibernateTemplate getHibernateTemplate() {
            return hibernateTemplate;
        }
        @Override
        public boolean saveStudent(Student student) {
            int id = (Integer)hibernateTemplate.save(student);
            if(id>0)
                return true;
            return false;
        }
        @SuppressWarnings("unchecked")
        @Override
        public Student getStudentDetailsByEmailAndPassword(String email,String password){
            DetachedCriteria detachedCriteria =  DetachedCriteria.forClass(Student.class);
            detachedCriteria.add(Restrictions.eq("email", email));
            detachedCriteria.add(Restrictions.eq("password", password));
            List<Student> findByCriteria = (List<Student>) hibernateTemplate.findByCriteria(detachedCriteria);
            if(findByCriteria !=null && findByCriteria.size()>0)
            return findByCriteria.get(0);
            else
                return null;
        }
    }

**现在我再次更改了 DAO 类而不是 HibernateTemplate 我使用了会话接口,现在值保存在数据库中,但是用户名和密码的验证在 Hibernate 模板中没有发生一些问题。请建议更改而不是 hibernate 模板我应该怎么做利用

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;

import com.infotech.dao.StudentCredentialDao;
import com.infotech.model.Student;
import com.infotech.model.StudentCredential;

@Repository("StudentCredentialDAO")
public class StudentCredentialDaoImpl implements StudentCredentialDao {

    @Autowired
    private SessionFactory sessionFactory;
@Autowired
    private HibernateTemplate hibernateTemplate;


    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public boolean saveStudentCred(StudentCredential stuCred) {
        Session session = this.sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        session.save(stuCred);
        tx.commit();
        session.close();
         return true;
    }
@SuppressWarnings("unchecked")
        @Override//This method is creating problem as I need to use something else other than Hibernate Template 
        public StudentCredential getStudentDetailsByUnameAndPassword(String uname,String password){
            DetachedCriteria detachedCriteria =  DetachedCriteria.forClass(StudentCredential.class);
            detachedCriteria.add(Restrictions.eq("uname", uname));
            detachedCriteria.add(Restrictions.eq("password", password));
            List<StudentCredential> findByCriteria = (List<StudentCredential>)hibernateTemplate.findByCriteria(detachedCriteria);
            if(findByCriteria !=null && Hibernate template .size()>0)
            return findByCriteria.get(0);
            else
                return null;
        }
    }

标签: javaspringhibernatespring-mvc

解决方案


@Repository
public class LoginDAOImpl implements LoginDAO {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public String loginCheck(String customerID, String password) {

        Session currentSession = sessionFactory.getCurrentSession();

        Query theQuery = currentSession.createQuery("from UserAccount u where u.customerID=:id AND u.password=:pass");
        theQuery.setParameter("id", customerID);
        theQuery.setParameter("pass", password);

        List results = theQuery.list();

        if ((results!=null) && (results.size()>0)){
            return "success";
        }
        else {
        return "failed";
    }

}

你可以这样使用


推荐阅读