为什么按学号查询,查哪个学号都显示所有

public List getList(int xh)
{
String where="";
if(xh!=0)
{
where=where+" where xuehao="+xh+"";
}
return this.findAll(where);
}

下边是findAll方法
private List<Xuesheng>  findAll(String where)
{
       Session sess = this.getSessionFactory().openSession();
         try
         {
          Query query = sess.createQuery(" From  Xuesheng " + where + " order by id ");
          return query.list();
         }
         finally
         {
            sess.close();
         }
}

那就是查询失败,你确定你的数据库字段是 xuehao ? 再确认下字段类型, 然后就是你的语句中 where xuehao = 后面的 “ 需要转译

仔细分析一下,能查询的出来,初步说明代码是对的,输入任何学号都查询所有,说明那个代码执行的就是查询所有,得出结论sql语句问题

断点看下,xh这个字段传值到getList方法时,应该全都是0; 再断点看下在findAll方法中的sql语句

断点看下,xh这个字段传值到getList方法时,应该全都是0; 再断点看下在findAll方法中的sql语句

sorry,刚网页没反应,一直点,就除了问题 。

用的hibernate是吧,那你将执行的sql在控制台打印出来看看,sql有什么问题

hibernate的话,你可以把执行的sql显示在控制台里,打印出来看看就知道了

加别名,字段加别名操作试试

where后面没有过滤值,当然显示所有。

先把你的查询语句打印出来看看,语法有问题,所以查询结果不正确

在查询的方法中打印一下where,估计where拼接的时候,判断条件错了

图片说明

这个是断点后的截图

如果真是都出来的话,看代码逻辑 应该是 xh等于0了,where条件没有拼接

你的字符串拼接有问题。where=where+" where xuehao="+xh+""; 这里去掉双引号试试。

断点跟踪下xh的值和query最终得到是sql语句是什么