当前位置:首页>开发>正文

Hibernate如何使用HQL实现JSP页面分页查询和上下页的翻页 使用HibernateTemplate时,怎么实现分页查找

2024-01-09 03:55:08 互联网 未知 开发

 Hibernate如何使用HQL实现JSP页面分页查询和上下页的翻页 使用HibernateTemplate时,怎么实现分页查找

Hibernate如何使用HQL实现JSP页面分页查询和上下页的翻页

Query query = s.createQuery(hsql)
query.setFirstResult(firstRow)
query.setMaxResults(maxRow)
List list = query.list()
return list
这样~ 通过firstRow跟maxRow进行限制要返回那些数据给jsp。
每次你点上下页的时候 都把页码给传到后台~ 然后后台根据每页显示的条数 页码 计算是firstRow maxRow是第几条就ok了~

使用HibernateTemplate时,怎么实现分页查找

OK。。我刚好有做这一段。。给你看看吧 /** * 使用hql 语句进行操作 * * @param hql * HSQL 查询语句 * @param offset * 开始取数据的下标 * @param length * 读取数据记录数 * @return List 结果集 */ protected List findByPageBean(final int pageNo, final int pageSize, final String hql) throws Exception { List list = null try { list = this.getHibernateTemplate().executeFind( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql) query.setFirstResult(pageNo) query.setMaxResults(pageSize) List list = query.list() return list } }) } catch (Exception e) { throw e } return list } 强吧。。唉。。你也不给点分。。杯具!

hibernate 能用sql语句吗

当然可以的 我发一段 我项目中用的... 可不可以 你要查API啊 API说可以就可以 说不可以就不可以啦~~~
/**
* 使用hql语句进行分页查询
* @param hql 需要查询的hql语句
* @param value 如果hql有一个参数需要传入,value就是传入hql语句的参数
* @param offset 第一条记录索引
* @param pageSize 每页需要显示的记录数
* @return 当前页的所有记录
*/
public List findByPage(final String hql , final Object value ,
final int offset, final int pageSize)
{
//通过一个HibernateCallback对象来执行查询
List list = getHibernateTemplate()
.executeFind(new HibernateCallback()
{
//实现HibernateCallback接口必须实现的方法
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
//执行Hibernate分页查询
List result = session.createQuery(hql)
//为hql语句传入参数
.setParameter(0, value)
.setFirstResult(offset)
.setMaxResults(pageSize)
.list()
return result
}
})
return list
}

怎么使用hibernate自己的分页?

/**
* 使用对象的查询方法
*
* @param c:查询的类
* @param obj:查询的对象
* @param orber:按那个字段排序
* @param row:每页多少条记录
* @param page:第几页
* @return List: 集合
*/
public List find(Class c, Object obj, String[] orber, int row, int page) {
List list = null
try {
Criteria criteria = HibernateSessionFactory.getSession()
.createCriteria(c)
if (obj != null) {
Example example = Example.create(obj)
example.enableLike(MatchMode.ANYWHERE)// 匹配模式,使用模糊查询必填项。
example.excludeNone()// 空的不做查询条件
example.excludeZeroes()// 0不要查询
example.ignoreCase() // 不区分大小写

criteria.add(example)
}

if (row > 0 && page > 0) {
criteria.setMaxResults(row)// 最大显示记录数
criteria.setFirstResult((page - 1) * row)// 从第几条开始
}

// 判断是否有排序请求,如果有加入到排序方法中
if (orber != null) {
for (int i = 0 i < orber.length i )
criteria.addOrder(Order.desc(orber[i]))
}
list = criteria.list()
return list
} catch (HibernateException e) {
e.printStackTrace()
return null
} finally {
HibernateSessionFactory.closeSession()
}

}

/**
* 使用HQL查询语句
*
* @param hql:hql语言
* @param row:每页显示多少记录
* @param page:显示第几页
* @param params:
* 所传的对应参数
* @return List: 返回集合
*/
public List find(String hql, int row, int page, ArrayList params) {
try {
query = HibernateSessionFactory.getSession().createQuery(hql)
if (null != params) {// 循环把给参数赋值
for (int i = 0 i < params.size() i ) {
query.setParameter(i, params.get(i))
}
}
if (row > 0 && page > 0) {
query.setMaxResults(row)// 每页显示多少条记录
query.setFirstResult((page - 1) * row)// 显示第几条记录
}
return query.list()
} catch (HibernateException e) {
e.printStackTrace()
return null
} finally {
HibernateSessionFactory.closeSession()
}
}

求Hibernate的分页方法

public String getLimitString(String sql) {
StringBuffer pagingSelect = new StringBuffer(100)
pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ")
pagingSelect.append(sql)
pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?")
return pagingSelect.toString()
}

做这个方法。调用在你的hql里就可以了 hibernate的现成方法只有你那种。

上述方法,你稍微做下修改即可

hibernate查询分页的问题?急,先谢谢了

setFirstResult(firstResult)//从第几条开始
setMaxResults(maxResults)//共取几条
使用这两个方法就可以了

谢谢提醒,注释写错了,不好意思!

可以Hi我

HibernateDaoSupport分页方法

这个分页方法希望能帮到你
@SuppressWarnings("unchecked")
protected List executeQuery(Pager pager, String hql, Object... values) {
Query query = getSession().createQuery(hql)
for (int i = 0 values != null && i < values.length i ) {
query.setParameter(i, values[i])
}
if(pager != null){
query.setFirstResult((pager.getCurrentPage() - 1) * pager.getPageSize())
query.setMaxResults(pager.getPageSize())
}
return query.list()
}

protected Long executeCount(String hql, Object... values) {
Query query = getSession().createQuery("select count(*) " hql)
for (int i = 0 values != null && i < values.length i ) {
query.setParameter(i, values[i])
}
return (Long)query.list().get(0)
}

hibernate 数据库分页

看错误:Every derived table must have its own alias 。你换了数据库,但是数据库的配置有些地方你没改,数据库方言要相应换成MYSQL的数据库方言。
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" lazy-init="true" > org.hibernate.dialect.Oracle9Dialect (这个地方就是hibernate的数据库方言) true classpath*:/db/orm/
你把方言换成org.hibernate.dialect包下的org.hibernate.dialect.MySQLDialect或者org.hibernate.dialect.MySQL5Dialect试试,有问题再说。

最新文章