您的位置:首页 > 其它

HQL语句查询中一些参数设置的问题

2007-11-02 12:31 531 查看
以前在用hibernate写查询的时候,都是带两个参数的查询,这样的话不利于放在底层,也就是不利于代码的

重复使用,下面是带两个参数的代码:




public List find(String queryString, String value) ...{


Session session = sessionManage.currentSession();




try ...{


Query query = session.createQuery(queryString);


query.setString(0, value);


query.setCacheable(cacheable);


return query.list();




} catch (HibernateException e) ...{


BaseService.getInstance().getContext().log(


"[PersistMap][find] HibernateException ",


e);


return null;




} finally ...{


sessionManage.closeSession();


}


}

如果加上一个参数的话,加上,Hibernate内置的一个对象Type,这样就可以产生你想要的数据类型,

可以直接写query.setParameter(0, value, type); 这种形式,你可以在任何地方调用这个函数

并且可以带上你想要的类型。而且里面的值都可以是对象数组形式,下面是这种方法的事例代码:




public List find(String queryString, Object value, Type type) ...{


Session session = sessionManage.currentSession();




try ...{


Query query = session.createQuery(queryString);


query.setParameter(0, value, type);


query.setCacheable(cacheable);


return query.list();




} catch (HibernateException e) ...{


BaseService.getInstance().getContext().log(


"[PersistMap][find] HibernateException ",


e);


return null;




} finally ...{


sessionManage.closeSession();


}


}






/**//* (非 Javadoc)


* @see com.cn001play.general.database.IQueryPersist#find(java.lang.String, java.lang.Object[], net.sf.hibernate.type.Type[])


*/




public List find(String queryString, Object[] values, Type[] types) ...{


Session session = sessionManage.currentSession();




try ...{


Query query = session.createQuery(queryString);




for (int i = 0; i < values.length; i++) ...{


query.setParameter(i, values[i], types[i]);


}


query.setCacheable(cacheable);


return query.list();




} catch (HibernateException e) ...{


BaseService.getInstance().getContext().log(


"[PersistMap][find] HibernateException ",


e);


return null;




} finally ...{


sessionManage.closeSession();


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: