我在进行条件组合查询的时候,刚开始使用sql语句实现的代码在下边,现在我想用hibernate的hql语句实现,

2025-12-17 08:23:43
推荐回答(1个)
回答1:

String hql="select u.* from User u where 1=1 ";

ListargList=new ArrayList();
ListtypList=new ArrayList();

if(user.getUsername()!=null && user.getUsername().trim().length()>0){
hql+="and u.username like ?";
argList.add("%"+user.getUsername()+"%");
typList.add(Hibernate.STRING)
}

if(user.getSex()!=null && user.getSex().trim().length()>0){
hql+="and u.sex=?";
argList.add(user.getSex());
typList.add(Hibernate.STRING)
}

if(user.getEducation()!=null&&user.getEducation().trim().length()>0){
hql+="and u.education=?";
argList.add(user.getEducation());
typList.add(Hibernate.STRING)
}

if(user.getIsUpload()!=null && user.getIsUpload().trim().length()>0){
if(user.getIsUpload().equals("1")){
hql+="and u.filename is not null";
}else if(user.getIsUpload().equals("2")){
hql+="and u.filename is null";
}
}

Listusers=session.createQuery(hql)
.setParameters(argList.toArray(), typList.toArray())
.list();

请参考