论坛首页 Java企业应用论坛

介绍DynamicQueryTool,一个用于解决“拼装动态查询”的小工具。

浏览 37257 次
该帖已经被评为良好帖
作者 正文
   发表时间: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;
		
	}
	

0 请登录后投票
   发表时间:2007-09-07  
我宁愿多写几个dao方法,也不会凑合这么一个dao方法用,毕竟数据库操作效率是关键..
0 请登录后投票
   发表时间: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;
	}
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics