java - 在 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;
}
}
解决方案
@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";
}
}
你可以这样使用
推荐阅读
- c++ - 为什么调用复制构造函数而不是使用右值初始值设定项的移动构造函数?
- r - 在 R. 中,有条件地添加其中一个变量必须为正的值(使用 rowsums)
- python - 屏幕截图后移动部分留下痕迹而不尊重屏幕部分
- python - 是否可以将 PyTorch dataLoader 对象存储到文件或其他东西中?
- ios - DatePicker 显示格式显示不同
- javascript - ForEach 属性的问题在 Discord.js(节点)中未定义
- javascript - 为什么等待不等待
- html - 悬停事件将应用哪些属性?
- python - 如何使用 Python 中的特定键从字典列表中创建字典
- javascript - React Native PagerView Webpack TypeError on web