hibernate阿里云mysql_hibernate HQL查询数据库表中记录的条数

[ 大多数情况下,Session 管理的目标聚焦于通过合理的设计,避免Session 的频繁创建 和销毁,从而避免大量的内存开销和频繁的JVM垃圾回收,保证系统高效平滑运行。]

/** * 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 threadLocal = new ThreadLocal(); 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 SessionFactory 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; } }

/** *

* Title: HQL的语句封装类 *

*

* Description: 该对象封装HQL的查询语句,参数集合,排序参数,分组参数,单页起始地址 *

*/ 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; } }[Hibernate 的数据库查询机制。我们从查询结果中取出数据的时候, 用的最多的是两个方法:Query.list();Query.iterate();  对于list方法而言,实际上Hibernate是通过一条

/** * 获得表中记录的总条数 * * @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; }

[  Hibernate的HQL已经支持大多数数据库函数,肯定不能包括所有, 幸运的是Hibernate已经对此做了相应的方案解决, 也就是Dialect中注册数据库函数.具体做法如下,我们以Mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值