您的位置:首页 > 其它

最近项目中用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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: