Hibernate封裝好了的工具類
package util;import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import entity.UserInfo; public class HibernateUtil { private static SessionFactory sessionFactory; /** * @return 獲取會話工廠 */ public static SessionFactory getSessionFactory() { //第一步:讀取Hibernate的配置文件 hibernamte.cfg.xml文件 Configuration con=new Configuration().configure(); //第二步:創建服務注冊構建器對象,通過配置對象中加載所有的配置信息 ServiceRegistryBuilder regbulider=new ServiceRegistryBuilder().applySettings(con.getProperties()); //創建注冊服務 ServiceRegistry reg=regbulider.buildServiceRegistry(); //第三步:創建會話工廠 SessionFactory sessionFactory=con.buildSessionFactory(reg); return sessionFactory; } /** * @return 獲取會話對象 */ public static Session getSession() { return getSessionFactory().openSession(); } /** * @param obj 添加數據 * @return */ public static boolean add(Object obj) { Session session=null; Transaction tran=null; boolean result=false; try { session=getSession(); tran=session.beginTransaction(); session.save(obj); tran.commit(); result=true; } catch (Exception e) { if(tran!=null) { //事物回滾 tran.rollback(); } } finally { if(session!=null) { //關閉session session.close(); } } return result; } /** * @return 更新數據 * 參數為修改的主鍵id對象 */ public static boolean update(Object object) { Session session=null; Transaction tran=null; boolean result=false; try { session=getSession(); tran=session.beginTransaction(); session.update(object); tran.commit(); result=true; } catch (Exception e) { if(tran!=null) { //事物回滾 tran.rollback(); } } finally { if(session!=null) { //關閉session session.close(); } } return result; } /** * @param c * @param obj 查詢一條數據根據主鍵的id號 * @return */ public static Object get(Class c,int obj) { Session session=null; Object object=null; try { session=getSession(); object=session.get(c,obj); } catch (Exception e) { } finally { if(session!=null) { //關閉session session.close(); } } return object; } /** * @param obj * @return 刪除數據 */ public static boolean delete(Object obj) { Session session=null; Transaction tran=null; boolean result=false; try { session=getSession(); tran=session.beginTransaction(); session.delete(obj); tran.commit(); result=true; } catch (Exception e) { if(tran!=null) { //事物回滾 tran.rollback(); } } finally { if(session!=null) { //關閉session session.close(); } } return result; } /** * @param <T> 查詢多條記錄 * @param sql sql語句 * @param param 參數數組 * @return */ @SuppressWarnings("unchecked") public static <T> List<T> query(String sql,String[] param) { List<T> list=new ArrayList<T>(); Session session=null; try { session=getSession(); Query query=session.createQuery(sql); if(param!=null) { for(int i=0;i<param.length;i++) { query.setString(i,param[i]); } } list=query.list(); } catch (Exception e) { } finally { if(session!=null) { session.close(); } } return list; } /** * @param sql * @param param 查詢單條記錄 * @return */ public static Object queryOne(String sql,String[] param) { Object object=null; Session session=null; try { session=getSession(); Query query=session.createQuery(sql); if(param!=null) { for(int i=0;i<param.length;i++) { query.setString(0,param[i]); } object=query.uniqueResult(); } } catch (Exception e) { } finally { if(session!=null) { session.close(); } } return object; } /** * @param <T> * @param sql * @param param * @param page * @param size * @return 實現分頁查詢 */ @SuppressWarnings("unchecked") public static <T> List<T> queryByPage(String sql,String[] param,int page,int size) { List<T> list=new ArrayList<T>(); Session session=null; try { session=getSession(); Query query=session.createQuery(sql); if(param!=null) { for(int i=0;i<param.length;i++) { query.setString(i,param[i]); } } //篩選條數 query.setFirstResult((page-1)*size); query.setMaxResults(size); list=query.list(); } catch (Exception e) { } finally { if(session!=null) { session.close(); } } return list; } /** * @param hql * @param pras * @return返回數據個數 */ public static int getCount(String hql, String[] pras) { int resu = 0; Session s = null; try { s = getSession(); Query q = s.createQuery(hql); if (pras != null) { for (int i = 0; i < pras.length; i++) { q.setString(i, pras[i]); } } resu = Integer.valueOf(q.iterate().next().toString()); } catch (Exception e) { e.printStackTrace(); } finally { if (s != null) s.close(); } return resu; } } </pre><br />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!