赞
踩
一、hibernate分页查询:
方法:
setFirstResult:设置查询开始的记录 setMaxResults:设置每次查询的条数 /** * 查找全部文章的重载 * 分页查询 * @param currentPage 当前页面 * @param maxResults 每页最大条数 * @return */ public List<Article> findAllArticle(Integer currentPage,Integer maxResults ) { String hql = "FROM Article" ; //如果要根据外键的字段进行分页查询,则应该是 //String hql = "From Article WHERE user.userId=xxx ;这里的user是Article类中外键的对象引用 Query query = session.createQuery(hql) ; //设置开始查询的对象索引 当前页面-1 乘以每页最大条目数 query.setFirstResult((currentPage-1)*maxResults) ; //设置每页最大条目数 query.setMaxResults(maxResults) ; return query.list() ; }
二、hibernateTemlate的分页查询(多使用这种方法,简便)
1.有条件的分页查询
public List<Draft> findAllDraft(Integer authorId , Integer currentPage, Integer maxResults) {
Draft draft = new Draft() ;
draft.setAuthorId(authorId); //这是要设置的条件,满足这个条件的会被分页查找出来
return hibernateTemplate.findByExample(draft, (currentPage-1)*maxResults, maxResults) ;
注意!findByExample方法会忽略掉对象draft中的null值,就是说如果属性为null,就不会将该属性写入sql语句的条件中。
但是!基本类型的默认值不是null,而是0!所以,如果存在除了主键外的基本类型,那么将会被写进到sql语句的条件中。
因此,在使用的对象的类中(draft对象的类Draft),不要用基本类型,而要用包装类,防止在这个时候导致查询不到结果
}
2.查找所有的分页查询(detachedCriteria)
public List<Dustbin> findAllDustbin(Integer currentPage, Integer MAXRESULTS) {
DetachedCriteria criteria = DetachedCriteria.forClass(Dustbin.class) ;
return (List<Dustbin>) hibernateTemplate.findByCriteria(criteria, (currentPage-1)*MAXRESULTS, MAXRESULTS) ;
}
方法是findByCriteria方法
利用了detachedCriteria对象,该对象不用从session里获取,但可以用任意一个session方法使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。