您的位置:首页 > 数据库

hibernate HQL查询数据库表中记录的条数

2011-04-22 14:59 274 查看
/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution.  Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html }.
*/
public class HibernateUtil {
/**
* Location of hibernate.cfg.xml file.
* Location should be on the classpath as Hibernate uses
* #resourceAsStream style lookup for its configuration file.
* The default classpath location of the hibernate config file is
* in the default package. Use #setConfigFile() to update
* the location of the configuration file for the current session.
*/
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private  static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateUtil() {
}

/**
* Returns the ThreadLocal Session instance.  Lazy initialize
* the <code>SessionFactory</code> if needed.
*
*  @return Session
*  @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
/**
*  Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
/**
*  Close the single hibernate session instance.
*
*  @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
/**
*  return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
*  return session factory
*
*	session factory will be rebuilded in the next call
*/
public static void setConfigFile(String configFile) {
HibernateUtil.configFile = configFile;
sessionFactory = null;
}
/**
*  return hibernate configuration
*
*/
public static Configuration getConfiguration() {
return configuration;
}
}


/**
* <p>
* Title: HQL的语句封装类
* </p>
* <p>
* Description: 该对象封装HQL的查询语句,参数集合,排序参数,分组参数,单页起始地址
* </p>
*/
public class HQuery {
/**
* HQL查询语句
*/
private String queryString;
/**
* 参数集合对象
*/
private ParasList paralist;
/**
* 排序字段
*/
private String orderby;
/**
* 分组字段
*/
private String groupby;
/**
* 分页起始查询地址
*/
private int pageStartNo;
/**
* 取得一个Hibernate的Query对象
*
* @return:Query对象
*/
public String getQueryString() {
return queryString;
}
/**
* 设置一个HQL查询字符串
*
* @param queryString:查询字符串
*
*/
public void setQueryString(String queryString) {
this.queryString = queryString;
}
/**
* 取得参数集合对象
*
* @return:参数集合对象
*/
public ParasList getParalist() {
return paralist;
}
/**
* 设置参数集合对象
*
* @param paralist:参数集合对象
*/
public void setParalist(ParasList paralist) {
this.paralist = paralist;
}
/**
* 取得排序字段
*
* @return:排序字段
*/
public String getOrderby() {
return orderby;
}
/**
* 设置排序字段
*
* @param orderby
*/
public void setOrderby(String orderby) {
this.orderby = orderby;
}
/**
* 取得分组字段
*
* @return
*/
public String getGroupby() {
return groupby;
}
/**
* 设置分组字段
*
* @param groupby
*/
public void setGroupby(String groupby) {
this.groupby = groupby;
}
/**
* 取得页起始地址
*
* @return
*/
public int getPageStartNo() {
return pageStartNo;
}
/**
* 设置页起始地址
*
* @param pageStartNo
*/
public void setPageStartNo(int pageStartNo) {
this.pageStartNo = pageStartNo;
}
}


/**
* 获得表中记录的总条数
*
* @param hql:HQL查询语句
* @return int 记录的总条数
*/
public static int getRows(String hql) {
int totalRows = 0;
Session session = null;
try {
session = HibernateUtil.getSession();
Query query = session.createQuery(hql);
totalRows = (new Integer(query.uniqueResult().toString()))
.intValue();
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession();
}
return totalRows;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: