hibernate辅助类含分页

  1 package com.cy.utils;
  2 
  3 import java.io.Serializable;
  4 import java.util.Iterator;
  5 import java.util.List;
  6 import java.util.Map;
  7 import java.util.Set;
  8 
  9 import org.hibernate.HibernateException;
 10 import org.hibernate.Query;
 11 import org.hibernate.Session;
 12 import org.hibernate.SessionFactory;
 13 import org.hibernate.Transaction;
 14 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 15 import org.hibernate.cfg.Configuration;
 16 import org.hibernate.service.ServiceRegistry;
 17 
 18 /**
 19  * Hibernate辅助类
 20  * 
 21  * @author renchang
 22  * 
 23  */
 24 public class HibernateUtils {
 25 
 26     private static Configuration config; // 配置对象
 27     private static ServiceRegistry ser; // 服务
 28     private static SessionFactory sf; // session工厂
 29     private static Session session; // session
 30     private static Transaction transaction; // 事务
 31 
 32     /**
 33      * 1.读取配置到Configuration 2.注册服务 3.获得SessionFactory
 34      */
 35     static {
 36         config = new Configuration().configure();
 37         ser = new StandardServiceRegistryBuilder().applySettings(
 38                 config.getProperties()).build();
 39         sf = config.buildSessionFactory(ser);
 40     }
 41 
 42     /**
 43      * 获得Session
 44      * 
 45      * @return session对象
 46      */
 47     public static Session getSession() {
 48         return session = sf.openSession();
 49     }
 50 
 51     /**
 52      * 获得事务对象
 53      * 
 54      * @return Transaction对象
 55      */
 56     public static Transaction getTransaction() {
 57         return transaction = session.beginTransaction();
 58     }
 59 
 60     /**
 61      * 关闭资源
 62      */
 63     public static void close() {
 64         try {
 65             session.close();
 66         } catch (HibernateException e) {
 67             e.printStackTrace();
 68         }
 69     }
 70 
 71     /**
 72      * 添加新数据
 73      * 
 74      * @param obj
 75      *            待添加的对象
 76      */
 77     public static void save(Object obj) {
 78         try {
 79             getSession();
 80             getTransaction();
 81             session.save(obj);
 82             transaction.commit();
 83         } catch (Exception e) {
 84             e.printStackTrace();
 85             transaction.rollback();
 86         } finally {
 87             close();
 88         }
 89     }
 90 
 91     /**
 92      * 修改数据
 93      * 
 94      * @param obj
 95      *            待修改的对象
 96      */
 97     public static void update(Object obj) {
 98         try {
 99             getSession();
100             getTransaction();
101             session.update(obj);
102             transaction.commit();
103         } catch (Exception e) {
104             e.printStackTrace();
105             transaction.rollback();
106         } finally {
107             close();
108         }
109     }
110 
111     /**
112      * 添删除数据
113      * 
114      * @param obj
115      *            待删除的对象
116      */
117     public static void delete(Object obj) {
118         try {
119             getSession();
120             getTransaction();
121             session.delete(obj);
122             transaction.commit();
123         } catch (Exception e) {
124             e.printStackTrace();
125             transaction.rollback();
126         } finally {
127             close();
128         }
129     }
130 
131     /**
132      * 按条件插叙数据
133      * 
134      * @param hql
135      *            插叙的hql语句
136      * @param whereMap
137      *            插叙条件的键值对
138      * @return 满足条件的对象集合
139      */
140     public static List<?> find(String hql, Map<String, Object> whereMap) {
141         List<?> objList = null;
142         try {
143             getSession();
144             getTransaction();
145             getTransaction();
146             hql = setHql(hql, whereMap);
147             Query query = session.createQuery(hql);
148             objList = query.list();
149             transaction.commit();
150         } catch (Exception e) {
151             e.printStackTrace();
152             transaction.rollback();
153         } finally {
154             close();
155         }
156         return objList;
157     }
158 
159     /**
160      * 根据id获得对象信息
161      * 
162      * @param cls
163      *            对象z
164      * @param id
165      *            id
166      * @return 对象
167      */
168     public static Object getObjById(Class<?> cls, Serializable id) {
169         Object obj = null;
170         try {
171             getSession();
172             getTransaction();
173             obj = session.get(cls, id);
174             transaction.commit();
175         } catch (Exception e) {
176             e.printStackTrace();
177             transaction.rollback();
178         } finally {
179             close();
180         }
181         return obj;
182     }
183 
184     /**
185      * 分页
186      * 
187      * @param hql
188      *            分页语句
189      * @param pageSize
190      *            每页大小
191      * @param pageNo
192      *            当前页数
193      * @param whereMap
194      *            分页条件
195      * @return 满足条件的数据
196      */
197     public static List<?> paging(String hql, int pageSize, int pageNo,
198             Map<String, Object> whereMap) {
199         List<?> objList = null;
200         try {
201             getSession();
202             getTransaction();
203             getTransaction();
204             hql = setHql(hql, whereMap);
205             Query query = session.createQuery(hql);
206             int beginRow = (pageNo - 1) * pageSize;
207             query.setFirstResult(beginRow);
208             query.setMaxResults(pageSize);
209             objList = query.list();
210             transaction.commit();
211         } catch (Exception e) {
212             e.printStackTrace();
213             transaction.rollback();
214         } finally {
215             close();
216         }
217         return objList;
218     }
219 
220     /**
221      * 获得条件下总条数
222      * 
223      * @param hql
224      *            hql语句
225      * @param whereMap
226      *            统计的总条数
227      * @return 总条数
228      */
229     public static int getTotalRows(String hql, Map<String, Object> whereMap) {
230         int totalRows = 0;
231         try {
232             getSession();
233             getTransaction();
234             hql = setHql(hql, whereMap);
235             Query query = session.createQuery(hql);
236             totalRows = (new Integer(query.uniqueResult().toString()))
237                     .intValue();
238         } catch (Exception e) {
239             e.printStackTrace();
240         } finally {
241             close();
242         }
243         return totalRows;
244     }
245 
246     /**
247      * 拼接hql语句
248      * 
249      * @param hql
250      *            原始hql语句
251      * @param whereMap
252      *            拼接的条件
253      * @return 拼接后的hql
254      */
255     private static String setHql(String hql, Map<String, Object> whereMap) {
256         StringBuffer sbHql = new StringBuffer(hql);
257         if (whereMap != null) {
258             Set<String> set = whereMap.keySet();
259             Iterator<String> it = set.iterator();
260             while (it.hasNext()) {
261                 String key = it.next();
262                 sbHql.append(" AND " + key + " LIKE '%" + whereMap.get(key)
263                         + "%'");
264             }
265         }
266         return sbHql.toString();
267     }
268 }
原文地址:https://www.cnblogs.com/hellokitty1/p/5055882.html