该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-07
自己来解决:
public List excuteQuery(String hql,Map params) { List result=null; try { Session session=HibernateUtil.getSession(); Transaction tx=session.beginTransaction(); Query query=session.createQuery(hql); Set keySet=params.keySet(); Iterator it=keySet.iterator(); //query.setParameter("name","t%"); while(it.hasNext()) { String keyName=(String)it.next(); Object keyValue=params.get(keyName); query.setParameter(keyName,keyValue); System.out.println("keyName="+keyName); System.out.println("keyValue="+keyValue); } result=query.list(); tx.commit(); } catch (DatastoreException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (HibernateException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return result; } |
|
返回顶楼 | |
发表时间:2007-09-07
我宁愿多写几个dao方法,也不会凑合这么一个dao方法用,毕竟数据库操作效率是关键..
|
|
返回顶楼 | |
发表时间:2007-09-07
对这样的需求,我自己写了个简单的辅助函数。
简单的查询是足够对付了。 /*************************************************************************** * sql增加查询参数的辅助方法 * * @param sql 需要添加的sql * @param params 参数列表 用的时候使用params.toArray(new Object[0])转换成数组 * @param value 查询条件参数 * @param nullObj 不需要添加查询条件的值 * @return */ public static String sqlAddParam(String sql, List<Object> params, String extSql, Object value, Object nullObj) { // 如果查询参数为空则返回 if (value == null || StringUtils.isEmpty(value.toString())) { return sql; } // 如果查询参数为通配符,则不添加查询条件 if (nullObj == null || nullObj.equals(value)) { return sql; } sql += extSql; params.add(value); return sql; } |
|
返回顶楼 | |