我用hibernate中的hql语句写了一个条件查询,但是不能正常执行,请帮忙看一下
publicList<User>selectUser(Useruser){StringBufferstringBuffer=newStringBuffer();strin...
public List<User> selectUser(User user) {
StringBuffer stringBuffer=new StringBuffer();
stringBuffer.append("from User where 1=1 ");
if(user.getUsername()!=null&&user.getUsername().trim().length()>0){
stringBuffer.append("and username like +'%"+user.getUsername()+"%'");
}if(user.getSex()!=null&&user.getSex().trim().length()>0){
stringBuffer.append("and sex="+user.getSex());
}if(user.getEducation()!=null&&user.getEducation().trim().length()>0){
stringBuffer.append("and education="+user.getEducation());
}if(user.getIsUpload()!=null&&user.getIsUpload().trim().length()>0){
if(user.getIsUpload().equals("1")){
stringBuffer.append("and filename is not null");
}else if(user.getIsUpload().equals("2")){
stringBuffer.append("and filename is null");
}
}
String sql=new String(stringBuffer);
//1.开启session
Session session=sessionFactory.openSession();
//2.操作对象
Query query=session.createQuery(sql);
List<User>users=query.list();
session.close();
return users;
} 展开
StringBuffer stringBuffer=new StringBuffer();
stringBuffer.append("from User where 1=1 ");
if(user.getUsername()!=null&&user.getUsername().trim().length()>0){
stringBuffer.append("and username like +'%"+user.getUsername()+"%'");
}if(user.getSex()!=null&&user.getSex().trim().length()>0){
stringBuffer.append("and sex="+user.getSex());
}if(user.getEducation()!=null&&user.getEducation().trim().length()>0){
stringBuffer.append("and education="+user.getEducation());
}if(user.getIsUpload()!=null&&user.getIsUpload().trim().length()>0){
if(user.getIsUpload().equals("1")){
stringBuffer.append("and filename is not null");
}else if(user.getIsUpload().equals("2")){
stringBuffer.append("and filename is null");
}
}
String sql=new String(stringBuffer);
//1.开启session
Session session=sessionFactory.openSession();
//2.操作对象
Query query=session.createQuery(sql);
List<User>users=query.list();
session.close();
return users;
} 展开
4个回答
展开全部
肯定执行不了了 都没有空格 输出的sql 不对
建议:写一个 test方法 传一个user 进来 看看你输出的 sql 是什么样子 然后根据你的sql 一项项的调
还有 你那些个 !=null, .trim().length()>0 你就不能抽一个方法出来 这样好难看的
建议:写一个 test方法 传一个user 进来 看看你输出的 sql 是什么样子 然后根据你的sql 一项项的调
还有 你那些个 !=null, .trim().length()>0 你就不能抽一个方法出来 这样好难看的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-02
展开全部
stringBuffer.append(" and education="+user.getEducation()); // and前,应该留一空格
如果查询的条件是字符串,应该加单引号。
——查询的条件,最好使用参数 。没你的环境,不太好测试。
如果查询的条件是字符串,应该加单引号。
——查询的条件,最好使用参数 。没你的环境,不太好测试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的sql只是相加了 但是你看看你的sql 的查询条件 如果都有的话 你的查询条件前后都没有空格,会连起来的,所以无法分析
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询