Hibernate中的分页查询

一、hibernate分页查询:
方法:

setFirstResult:设置查询开始的记录
	setMaxResults:设置每次查询的条数
/**
	 * 	查找全部文章的重载
	 * 	分页查询
	 * @param currentPage 	当前页面
	 * @param maxResults	每页最大条数
	 * @return
	 */
	public List
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 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 findAllDustbin(Integer currentPage, Integer MAXRESULTS) {
		DetachedCriteria criteria = DetachedCriteria.forClass(Dustbin.class) ;
		return (List) hibernateTemplate.findByCriteria(criteria, (currentPage-1)*MAXRESULTS, MAXRESULTS) ;
	}

方法是findByCriteria方法
利用了detachedCriteria对象,该对象不用从session里获取,但可以用任意一个session方法使用

你可能感兴趣的:(ssh)