查询分页商品
①
//获取查询的是product这个类
DetachedCriteria criteria = DetachedCriteria.forClass(Product.class);
//设置查询的条件属性和值
criteria.add(Restrictions.eq("is_hot", 1));
//查询只显示的热门的10个商品
List<Product> list = this.getHibernateTemplate().findByCriteria(criteria, 0, 10);
②通过自己分装的HibernateCallback类
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
public class PageHibernateCallback<T> implements HibernateCallback<List<T>>{
private String hql;
private Object[] params;
private int startIndex;
private int pageSize;
public PageHibernateCallback(String hql, Object[] params,
int startIndex, int pageSize) {
super();
this.hql = hql;
this.params = params;
this.startIndex = startIndex;
this.pageSize = pageSize;
}
public List<T> doInHibernate(Session session) throws HibernateException,
SQLException {
//1 执行hql语句
Query query = session.createQuery(hql);
//2 实际参数
if(params != null){
for(int i = 0 ; i < params.length ; i ++){
query.setParameter(i, params[i]);
}
}
//3 分页
query.setFirstResult(startIndex);
query.setMaxResults(pageSize);
return query.list();
}
}
来实现查询商品
List<Product> list = this.getHibernateTemplate().executeFind(new PageHibernateCallback<Product>("from Product where is_hot=?", new Object[]{1}, 0, 10));