java多条件模糊查询代码大概实现方法非where 1=1方法
/**
* 查询列表
* @return
*/
public String findJkjkMalfuncExperiencList()
{
StringBuilder hql =new StringBuilder("from JkjkMalfuncexperience ");
boolean b = true;
if(jkjkMalfunc!=null)
{
if(jkjkMalfunc.getExpid()!=null&&!"".equals(jkjkMalfunc.getExpid()))
{
//判断是否有where存在
b = this.hashWhere(hql,b);
hql.append(" expid like '%"+jkjkMalfunc.getExpid()+"%'");
}
if(jkjkMalfunc.getExptitle()!=null&&!"".equals(jkjkMalfunc.getExptitle()))
{
b = this.hashWhere(hql,b);
hql.append(" exptitle like '%"+jkjkMalfunc.getExptitle()+"%'");
}
System.out.println("测试语句:"+hql);
PageResultSet pageResultList = jkjkMalfuncExperienceManager.findJkjkMalfuncList(currentPage,10,hql.toString());
ActionContext.getContext().put("pageResultList", pageResultList);
}
return SUCCESS;
}
//判断where是否存在方法
public boolean hashWhere(StringBuilder hql,boolean hashWhere)
{
//where存在将返回false
if(hashWhere)
{
hql.append(" where ");
hashWhere = false;
}else
{
hql.append(" and ");
}
return hashWhere;
}
1 楼
lakewang
2011-11-16
看不懂?应该判断字符串吧
2 楼
duanyiyuan
2011-11-16
你的想法体现了你的探索精神,但是还不如用1=1来的方便,也没有其性能高。
3 楼
yelangking
2011-11-17
其实何必那么写呢,从代码的可读性来说,个人任务还不如1=1 再者,如你这种查询,难道不需要注意sql 注入吗?直接把参数作为字符串拼接在sql后,还是建议使用预处理