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语句是什么