我使用struts2和hibernate创建了一个登录应用程序。我从登录表中获取登录详细信息并存储在hibernate dao类的列表中。该列表被传递给login_action类。在动作类中我使用迭代器来获取值,但是我希望将数据库值(不是对象)存储在dao类的数组列表中。如何将值(例如:david,103)存储到dao类
中的数组列表中public class DAOClass {
...
public List getPwd(LoginModel lm) {
Session session=null;
List pwdlist = null;
session = sessionfactory.openSession();
try {
Query q=session.createQuery("from LoginModel l where UId='"+lm.getUname()+"'");
pwdlist=q.list();
} catch (Exception e){
e.printStackTrace();
}
return pwdlist;
}
}
答案 0 :(得分:0)
您只能选择特定列而不是所有列:
List<Object[]> list = session.createQuery("select column1, column2 from LoginModel l where UId='"+lm.getUname()+"'");
它将返回column1 -> array[0]
和column2 -> array[1]
的对象数组列表。
此查询更快一些,因为它只从数据库中获取特定列。但是你仍然需要迭代集合来获取值。
BTW使用setParameter
方法将值绑定到命名查询参数。使用setParameter
将阻止SQL注入。
List<Object[]> list = session.createQuery("select column1, column2 from LoginModel l where UId=:uid").setParameter("uid", lm.getUname());