hql纯sql语句控制-分页

本文详细介绍了如何使用Hibernate框架进行SQL查询优化,并结合分页实现高效数据检索。通过设置查询参数,如条件筛选、分页大小和排序,提高了查询效率。重点展示了通过创建SQL查询、设置分页参数和使用特定的返回转换器来获取所需数据的方法。
摘要由CSDN通过智能技术生成
public List<Map<String,Object>> find(final String sql,final String[] fields,
final Object[] conditionValues,final int page,int prePage){
List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
String nsql = sql;
if(pager!=null){
nsql+= pager.getOrderString();
}
SQLQuery query = session.createSQLQuery(nsql);
int first=((page-1)*prePage);
query.setFirstResult(first);
query.setMaxResults(prePage);
if(conditionValues!=null)
{
for (int i = 0 ; i < conditionValues.length ; i++)
{
query.setParameter( i, conditionValues[i]);
}
}
if(fields!=null){
for (int i = 0 ; i < fields.length;i++){
query.addScalar(fields[i]);
}
}
ResultTransformer rtf = Transformers.ALIAS_TO_ENTITY_MAP;
List result = query.setResultTransformer(rtf).list();
return result;
}
});
return list;
}


public Object findOne(final String sql,final String[] fields,final Object[] conditionValues){
List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
SQLQuery query = session.createSQLQuery(sql);
if(conditionValues!=null)
{
for (int i = 0 ; i < conditionValues.length ; i++)
{
query.setParameter( i, conditionValues[i]);

}
}
if(fields!=null){
for (int i = 0 ; i < fields.length;i++){
query.addScalar(fields[i]);
}
}
Object o = query.uniqueResult();
List l = new ArrayList();
l.add(o);
return l;
}
});
return list.get(0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值