给出四个字段
String sid;
String sname;
Date settime;
String setemail;
不填的话就是无条件匹配,填了那个就按那个查询,填了两个就是按这两个的条件查询,以此类推
要用模糊查询
这是我写的语句,这是不能通过的,
String hql=("select * from Student as s where " +
"s.name like '%"+sname+"%'"+"and"+
"s.studentId like '%"+sid+"%'"+"and"+
"s.setTime like '%"+settime+"%'"+"and"+
"s.email like '%"+setemail+"%'"); 请问大虾们怎么弄
String sid;
String sname;
Date settime;
String setemail;
不填的话就是无条件匹配,填了那个就按那个查询,填了两个就是按这两个的条件查询,以此类推
要用模糊查询
这是我写的语句,这是不能通过的,
String hql=("select * from Student as s where " +
"s.name like '%"+sname+"%'"+"and"+
"s.studentId like '%"+sid+"%'"+"and"+
"s.setTime like '%"+settime+"%'"+"and"+
"s.email like '%"+setemail+"%'"); 请问大虾们怎么弄
if(sname != null && !"".equals(sname.trim())) {
hql.append("and s.name like '%" + sname + "%'");
}
if(sid != null && !"".equals(sid.trim())) {
hql.append("and s.studentId like '%" + sid + "%'");
}
if(settime != null && !"".equals(settime.trim())) {
hql.append("and s.setTime like '%" + settime + "%'");
}
if(setemail != null && !"".equals(setemail.trim())) {
hql.append("and s.email like '%" + setemail + "%'");
}
最后在你要用到hql的地方写hql.toString()代替hql就可以了!
String hql="select Student stu where 1=1"
if(sname!=null)
hql+=" and stu.name like '%"+sname+"%'";
if(sid!=null)
hql+=" and stu.studentId like '%"+sid+"%'";
if(settime!=null)
hql+=" and stu.setTime like '%+settime+"%'";
if(email!=null)
hql+=" and stu.email like '%"+setemail+"'%";建议这种的sql执行考虑用存储过程来完成效率会高一些
一:Criteria有是hibernate的条件查询方法,你可以百度下
二:
String sid;
String sname;
Date settime;
String setemail;
四个属性,先判断是否为空,如果为空,就赋值“”,例如
if(sid==null) sid = "";
这样,你的hql不需要改
convert(varchar(21),s.setTime,120)