最近刚进公司,改一个页面,设计到hibernate的查询,但是在查询的过程中,发现自己对查询除了一个很大的错误认识;分享各位网友;
不多说了,直接上代码:
如下代码,我的dao原本意图是想通过用户登录名查询出user的所有信息;但是如果使用createquery这样的话,在查询的过程中,只能针对数字查询.非数字就会报错.
@Override
public com.donen.pojo.User getUserByloginUserName(String loginUserName) {
Session session = HibernateUtil.getSession();
HibernateUtil.beginTransaction();
Query query = session.createQuery("from User where Login_User_Name="+loginUserName);//只能针对数字查询
List<com.donen.pojo.User> list = query.list();
//如果获取的值为空就返回空
if (list.size()==0) {
return null;
}else {
return (com.donen.pojo.User) list.get(0);
}
}
经过改进后代码如下:
@Override
public com.donen.pojo.User getUserByloginUserName(String loginUserName) {
Session session = HibernateUtil.getSession();
HibernateUtil.beginTransaction();
SQLQuery query = session.createSQLQuery("select * from User where Login_User_Name=?");
query.addEntity(com.donen.pojo.User.class);
query.setParameter(0, loginUserName);
List<com.donen.pojo.User> list = query.list();
//如果获取的值为空就返回空
if (list.size()==0) {
return null;
}else {
return (com.donen.pojo.User) list.get(0);
}
}
这样写sql后就解决问题,至于原因我自己好像也说的不太清楚.也希望有大神能给个解释.如果,能解决部分人的困扰,深感荣欣.