模糊查询和精确查询的问题

shouzhi2007 2009-01-13 02:44:40

private List<Object> findByProperty(final String propertyName[],final Object value[]) {

return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException,
SQLException {
StringBuffer queryStringbuffer = new StringBuffer();
queryStringbuffer.append(" from SmsMo as model where 1=1 and ");
for (int i = 0; i < propertyName.length; i++) {
if (propertyName[i].indexOf("starttime") != -1) {
String[] str = propertyName[i].split("_");
queryStringbuffer.append("model." + str[0] + ">= ? and ");
} else if (propertyName[i].indexOf("endtime") != -1) {
String[] str = propertyName[i].split("_");
queryStringbuffer.append("model." + str[0] + "<= ? and ");
} else if(propertyName[i].indexOf("in") != -1){
String[] str = propertyName[i].split("_");
queryStringbuffer.append("model." + str[0] + "in(?) and ");
} else if(propertyName[i].indexOf("=") != -1){
String[] str = propertyName[i].split("_");
queryStringbuffer.append("model." + str[0] + "= ? and ");
}else {
// queryStringbuffer.append("model." + propertyName[i] + "= ? and ");
queryStringbuffer.append("model." + propertyName[i] + " LIKE ? and ");
}
}
int j = queryStringbuffer.lastIndexOf("and");
String queryString = queryStringbuffer.substring(0, j - 1);
Query query = s.createQuery(queryString);
for(int k=0;k<propertyName.length;k++)
{
//query.setParameter(k, value[k]);
query.setString(k,"%"+value[k] +"%");
}
}
List list = query.list();
return list;
}
});

}



以上是源码。是模糊查询的方法,注释的是精确查询方法,
我的问题是,我在页面里,如果选择了时间 ,就不能模糊查询,
如果 不选择时间就可以模糊查询,但是我想在有时间的条件下模糊查询?

大侠们给小弟一个思路。。
...全文
228 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_hf 2009-01-13
  • 打赏
  • 举报
回复
在你的页面中肯定会有一个时间输入框,提交后判断该输入框是否有值,有就精确查,没有就模糊喽

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧