最近项目中用hibernate分页查询的底层方法
2013-01-25 12:32
211 查看
hibernate底层查询数据库主要分为 hibernate sql查询和原生sql查询。
DAO方法所在类必须继承HibernateDaoSupport类:
hibernate sql查询两个方法区别是直接返回结果和做分页查询:
/**
* 执行Hibernate Sql语句,只返回执行sql的结果,不做其他处理
* @param queryStr
* @param startIndex
* @param pageSize
* @return
*/
public List performHSql(final String querysql) {
return getHibernateTemplate().find(querysql);
}
/**
* 执行Hibernate Sql语句,只返回执行sql的结果,不做其他处理
* @param queryStr
* @param startIndex
* @param pageSize
* @return
*/
public List performHSql(final String querysql, final Integer startIndex, final Integer pageSize) {
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
try {
Query query = session.createQuery(querysql);
if (pageSize.intValue() != 0) {
query.setFirstResult(startIndex.intValue()*(pageSize.intValue()));
query.setMaxResults(pageSize.intValue());
}
return query.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("perform Hibernate Sql error");
}
}
};
return (List) this.getHibernateTemplate().executeFind(callback);
}
原生sql查询两个方法区别是直接返回结果和做分页查询:
/**
* 执行Primitive Sql语句,主要用来执行原生sql语句,返回list数组列表
* @param querysql
* @param startIndex
* @param pageSize
* @return
*/
public List performPureSql(final String querysql){
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
try {
SQLQuery query = session.createSQLQuery(querysql);
return query.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("perform Primitive Sql error");
}
}
};
return (List)getHibernateTemplate().execute(callback);
};
/**
* 执行执行Primitive Sql语句,可以分页查询
* @param querysql
* @param startIndex
* @param pageSize 为0不做分页查询
* @return
*/
public List performPureSql(final String querysql, final Integer startIndex, final Integer pageSize) {
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
try {
SQLQuery query = session.createSQLQuery(querysql);
//pageSize 不为0 时做分页查询
if (pageSize.intValue() != 0) {
query.setFirstResult(startIndex.intValue()*(pageSize.intValue()));
query.setMaxResults(pageSize.intValue());
}
return query.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("perform Primitive Sql error");
}
}
};
return (List)getHibernateTemplate().execute(callback);
}
下面的方法是执行原生sql查询,把执行结果映射到实体类中,以对象列表(list<obj>)的形式返回:
/**
* 执行执行Primitive Sql语句,对返回结果进行对象实体的映射,返回list对象实体列表
* @param querysql
* @param startIndex
* @param pageSize 为0不做分页查询
* @return
*/
public List performSqlAddModel(final String querysql, final Integer startIndex, final Integer pageSize,final Class classname,final String alias) {
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
try {
SQLQuery sqlQuery = session.createSQLQuery(querysql);
if (pageSize.intValue() != 0) {
sqlQuery.setFirstResult(startIndex.intValue()*(pageSize.intValue()));
sqlQuery.setMaxResults(pageSize.intValue());
}
sqlQuery.addEntity(alias,classname);
return sqlQuery.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("getPSqlModelList method error");
}
}
};
return (List) this.getHibernateTemplate().execute(callback);
}
DAO方法所在类必须继承HibernateDaoSupport类:
hibernate sql查询两个方法区别是直接返回结果和做分页查询:
/**
* 执行Hibernate Sql语句,只返回执行sql的结果,不做其他处理
* @param queryStr
* @param startIndex
* @param pageSize
* @return
*/
public List performHSql(final String querysql) {
return getHibernateTemplate().find(querysql);
}
/**
* 执行Hibernate Sql语句,只返回执行sql的结果,不做其他处理
* @param queryStr
* @param startIndex
* @param pageSize
* @return
*/
public List performHSql(final String querysql, final Integer startIndex, final Integer pageSize) {
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
try {
Query query = session.createQuery(querysql);
if (pageSize.intValue() != 0) {
query.setFirstResult(startIndex.intValue()*(pageSize.intValue()));
query.setMaxResults(pageSize.intValue());
}
return query.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("perform Hibernate Sql error");
}
}
};
return (List) this.getHibernateTemplate().executeFind(callback);
}
原生sql查询两个方法区别是直接返回结果和做分页查询:
/**
* 执行Primitive Sql语句,主要用来执行原生sql语句,返回list数组列表
* @param querysql
* @param startIndex
* @param pageSize
* @return
*/
public List performPureSql(final String querysql){
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
try {
SQLQuery query = session.createSQLQuery(querysql);
return query.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("perform Primitive Sql error");
}
}
};
return (List)getHibernateTemplate().execute(callback);
};
/**
* 执行执行Primitive Sql语句,可以分页查询
* @param querysql
* @param startIndex
* @param pageSize 为0不做分页查询
* @return
*/
public List performPureSql(final String querysql, final Integer startIndex, final Integer pageSize) {
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
try {
SQLQuery query = session.createSQLQuery(querysql);
//pageSize 不为0 时做分页查询
if (pageSize.intValue() != 0) {
query.setFirstResult(startIndex.intValue()*(pageSize.intValue()));
query.setMaxResults(pageSize.intValue());
}
return query.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("perform Primitive Sql error");
}
}
};
return (List)getHibernateTemplate().execute(callback);
}
下面的方法是执行原生sql查询,把执行结果映射到实体类中,以对象列表(list<obj>)的形式返回:
/**
* 执行执行Primitive Sql语句,对返回结果进行对象实体的映射,返回list对象实体列表
* @param querysql
* @param startIndex
* @param pageSize 为0不做分页查询
* @return
*/
public List performSqlAddModel(final String querysql, final Integer startIndex, final Integer pageSize,final Class classname,final String alias) {
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
try {
SQLQuery sqlQuery = session.createSQLQuery(querysql);
if (pageSize.intValue() != 0) {
sqlQuery.setFirstResult(startIndex.intValue()*(pageSize.intValue()));
sqlQuery.setMaxResults(pageSize.intValue());
}
sqlQuery.addEntity(alias,classname);
return sqlQuery.list();
} catch (Exception e) {
e.printStackTrace();
throw new HibernateException("getPSqlModelList method error");
}
}
};
return (List) this.getHibernateTemplate().execute(callback);
}
相关文章推荐
- 最近项目中用hibernate分页查询的底层方法
- 用hibernate分页查询的底层方法
- J2EE项目系列(二)--博客管理系统(Maven+SpringMVC+Hibernate以及附加分页和一对多查询功能)
- 项目中不可缺少的分页查询方法
- hibernate底层的分页如何提高查询速度?
- Hibernate查询方法总结(包括条件分页查询、外键id查询)
- 总结一些分页查询的方法SQL server,MySQL,oracle数据库及hibernate中
- hibernate分组查询后,求分组总数的实现方法(管理系统分页)
- hibernate3与hibernate4实现分页查询的简单方法
- hibernate查询之Criteria实现分页方法(GROOVY语法)
- hibernate与spring整合后通用分页查询方法
- BBS项目笔记之八:hibernate底层查询的实现
- hibernate动态hql查询,分页查询,调用方法即可查询
- Hibernate分页查询的两个方法
- hibernate分页查询的各种方法
- Hibernate分页查询方法实现
- hibernate查询之Criteria实现分页方法(GROOVY语法)
- hibernate 多表联合查询,分页,重复记录导致的总记录数不对的解决方法。
- Cody_Yu 通用的DAO查询,常见方法集合,基于Oracle&Hibernate&Spring,集合了多种常用方法,方便调用。
- 最近做项目发现一个小bug,get方法请求spring+DBCP+Struts框架出现中文乱码