📄 listinfo.java
字号:
/*
* description: 得到符合条件的的记录数组
*
* Created on 2005-7-4
* @author WuQiaoYun
*
*/
package com.common.util;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.SessionFactoryUtils;
import com.res.core.service.ui.component.navbar.PageModel;
/**
* 得到符合条件的的记录数组,主要是分页组件使用
*
* @author WuQiaoYun
*/
public class ListInfo {
public ListInfo() {
}
/**
* @deprecated
*
* 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身
* @param hsql:
* 查询语句,如:"from Office as office1 order by office1.officename"
* @return: 返回查询结果数组
*/
public ArrayList getAllListBySearchCriteria(final Session session,
final String hsql) {
// Session session = ht.getSessionFactory().getCurrentSession();
Query q = session.createQuery(hsql);
ArrayList list = (ArrayList) q.list();
session.close();
return list;
}
/**
* 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身
*
* @param hsql:
* 查询语句,如:"from Office as office1 order by office1.officename"
* @param pageNo:页码
* @param page_size:每页的记录数
* @return: 返回查询结果当前页码的记录数
*/
public List getOfficeBySearchCriteria(final Session session,
final String hsql, PageModel pagemodel, Object[] values)
throws DataAccessException {
// System.out.println("values------------"+values[0]);
Query q = session.createQuery(hsql);
if (values != null) {
for (int i = 0; i < values.length; i++) {
q.setParameter(i, values[i]);
}
}
// System.out.println("q.getQueryString()===================="+q.getQueryString());
int size = q.list().size();
if (pagemodel != null) { //增加判断为不为空.这样该函数的重用性可以提高,这样是分页还是不分页都可以采用
int page_size = pagemodel.getPageSize();
int pageno = pagemodel.getCurrPage();
if (size <= page_size) {
q.setMaxResults(size);
q.setFirstResult(0);
} else {
q.setMaxResults(page_size);
q.setFirstResult((pageno - 1) * page_size);
}
pagemodel.setTotalRow(size);
}
ArrayList list = (ArrayList) q.list();
session.close();
return list;
}
/**
* 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身,相当于重载HibernateTemplate中的find方法,增加了Hibernate分页功能
*
* @param HibernateTemplate:spring中封装的HibernateTemplate对象
* @param hsql:
* 查询语句,如:"from Office as office1 where office1.officename =?"
* @param pagemodel:分页信息对象
* @param values:参数对象数组,如"new
* Object[]{paramvalue1, paramvalue2}"
* @return: 返回查询结果当前页码的记录数
*/
public List getOfficeBySearchCriteria(final HibernateTemplate ht,
final String hsql, final PageModel pagemodel, final Object[] values)
throws DataAccessException {
return (List) ht.execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Query queryObject = session.createQuery(hsql);
prepareQuery(ht, queryObject);
if (values != null) {
for (int i = 0; i < values.length; i++) {
queryObject.setParameter(i, values[i]);
}
}
/*
* System.out.println("queryObject.getQueryString()===================="+queryObject.getQueryString());
*
* System.out.println("pagesize=============="+pagemodel.getPageSize());
* System.out.println("CurrPage=============="+pagemodel.getCurrPage());
* System.out.println("pageno=============="+pagemodel.getPageNo());
*/
// 采用Hibernate实现分页功能
ScrollableResults scrollableResults = queryObject.scroll();
// get the total elements number
scrollableResults.last();
int size = scrollableResults.getRowNumber() + 1;
int page_size = pagemodel.getPageSize();
int pageno = pagemodel.getCurrPage();
// int pageno = 1;
pagemodel.setTotalRow(size);
if (Integer.MAX_VALUE == pageno
|| pageno > pagemodel.getPageCount()) // last page
{
pageno = pagemodel.getPageCount();
}
if (size <= page_size) {
queryObject.setFirstResult(0);
queryObject.setMaxResults(size);
} else {
queryObject.setFirstResult((pageno - 1) * page_size);
queryObject.setMaxResults(page_size);
}
// System.out.println("pagemodel==="+pagemodel.hashCode());
/*
* System.out.println("q.setFirstResult====="+(pageno - 1) *
* page_size);
* //System.out.println("q.setMaxResults====="+page_size);
*
* System.out.println("sizer=sessioninfo= ="+size);
* System.out.println("page_size= ="+page_size);
* System.out.println("pageno==="+pageno);
* System.out.println("getPageCount==="+pagemodel.getPageCount());
*/
/*
* System.out.println("getTotalRow==="+pagemodel.getTotalRow());
* System.out.println("pagesize=====2222222========="+pagemodel.getPageSize());
* System.out.println("CurrPage=====22222222========="+pagemodel.getCurrPage());
* System.out.println("pageno=======222222======="+pagemodel.getPageNo());
*/
return queryObject.list();
}
}, true);
}
/*
* 准备给定的SQL查询,应用缓冲、事务超时设置 @param
* HibernateTemplate:spring中封装的HibernateTemplate对象 @param queryobject:
* Query对象 @return: 返回值为空
*/
protected void prepareQuery(HibernateTemplate ht, Query queryObject) {
if (ht.isCacheQueries()) {
queryObject.setCacheable(true);
if (ht.getQueryCacheRegion() != null) {
queryObject.setCacheRegion(ht.getQueryCacheRegion());
}
}
SessionFactoryUtils.applyTransactionTimeout(queryObject, ht
.getSessionFactory());
}
/**
* 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身
*
* @param hsql:
* 查询语句,如:"from Office as office1 order by office1.officename"
* @param pageNo:页码
* @param page_size:每页的记录数
* @return: 返回查询结果当前页码的记录数
*/
public List getOfficeBySearchCriteria(final Session session,
final String hsql, PageModel pagemodel) throws DataAccessException {
// System.out.println("pm.ListInfo=-------------====="+pagemodel.hashCode());
// System.out.println("session------------"+session);
Query q = session.createQuery(hsql);
// System.out.println("q.getQueryString()===================="+());
int size = q.list().size();
int page_size = pagemodel.getPageSize();
int pageno = pagemodel.getCurrPage();
// System.out.println("sizer=sessioninfo= ="+size);
if (size <= page_size) {
q.setMaxResults(size);
q.setFirstResult(0);
} else {
q.setMaxResults(page_size);
q.setFirstResult((pageno - 1) * page_size);
}
pagemodel.setTotalRow(size);
ArrayList list = (ArrayList) q.list();
// list.add(pagemodel);
session.close();
return list;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -