ssh项目中多条件查询怎么写?
小弟在网上看到的多条件查询都是一样,都是从某个地方转贴过来的。我知道一个一个地拼写是可以行得通,但这样后期维护相当麻烦,效率也不高。网上看到的这样一个说是通用的,但是我的service层和action层怎么写,怎么调用呢?这个查询代码如下:
// value[i]为第i个查询条件propertyName[i]的值 (本方法已通过测试)
// 多条件查询,查询条件的值为空时自动除去该条件
// rigor为true时采用精确查询 */
@SuppressWarnings("unchecked")
public List searchByPropertys(String resume, String[] propertyName,
Object[] value, int page, boolean rigor) {
StringBuffer sqlBuffer = new StringBuffer();
String ralation = " like ";
if (rigor) {
ralation = " = ";
}
sqlBuffer.append("from " + resume + " as r\n");
int len = propertyName.length;
List list = new ArrayList();
boolean first = true;
for (int i = 0; i < len; i++) {
if (value[i] != null) {
if (first) {
sqlBuffer.append(" where " + "r." + propertyName[i]
+ ralation + " ?\n");
list.add(value[i]);
first = false;
} else {
sqlBuffer.append(" and " + "r." + propertyName[i]
+ ralation + " ?\n");
list.add(value[i]);
}
}
}
try {
Session session = getSession();
Query queryObject = session.createQuery(sqlBuffer.toString());
for (int i = 0; i < list.size(); i++) {
if (rigor) {
queryObject.setParameter(i, list.get(i));
} else {
queryObject.setParameter(i, "%" + list.get(i) + "%");
}
}
list = queryObject.list();
// closeSession(session);
session.close();
return list;
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
我现在做的是搜索人才简历库,条件N多,用上面说的这个查询方法我不懂怎么去用,麻烦哪位大哥帮忙一下,谢谢了!分不够可以追加,分不是问题。这个问题相当棘手,因为是我一个人完成,相当累,目前在网上找不到一个开源的人才招聘系统,希望能够尽快完成这个人才招聘系统。