Hibenate工具类(实现增/删/改/查)
生活随笔
收集整理的這篇文章主要介紹了
Hibenate工具类(实现增/删/改/查)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自己學習的時候,順手寫的。主要為了減少重復操作!感覺還是可以的!
package com.hr.utils;import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;public class HibenateUtil {// 獲取配置文件private static Configuration cfg;private static ThreadLocal<Session> tl = new ThreadLocal<Session>();// Session工廠private static SessionFactory factory;static {// 讀取配置文件信息cfg = new Configuration().configure();// 構建會話工廠,根據會話工廠創建sessionfactory = cfg.buildSessionFactory();}// 獲得Sessionpublic static Session getSession() {// 返回一個根據會話工廠創建的sessionSession session = tl.get();if (session == null) {session = factory.openSession();tl.set(session);}return session;}// 關閉sessionpublic static void close(Session session) {session = tl.get();// 在session值不等于空且session值存在的情況下,關閉sessionif (session != null && session.isOpen()) {session.close();tl.set(null);}}/*** 插入數據方法*/public static void insert(Object obj) {// 1.獲得session工廠Session session = getSession();// 2.插入數據session.save(obj);// 3.開始并執行操作session.beginTransaction().commit();// 4.關閉session工廠close(session);}/*** 更新數據的方法*/public static void update(Object obj) {// 1.獲得session工廠Session session = getSession();// 2.更新數據session.update(obj);// 3.開始并執行操作session.beginTransaction().commit();// 4.關閉session工廠close(session);}/*** 刪除數據的方法*/public static void delete(Object obj) {// 1.獲得session工廠Session session = getSession();// 2.刪除數據session.delete(obj);// 3.開始并執行操作session.beginTransaction().commit();// 4.關閉session工廠close(session);}/*** 查詢(列表的形式)* select t from " + sql1 + " t " + sql2 + " "*/public static List selectList(String sql1, String sql2) {Session session = getSession();String hql = null;// 1)需要查詢的條件是uid等于5// 2)數據對象為User類里面的屬性// 3)t代表User對象的所有屬性if (sql1 != null && sql2 != null) {hql = "select t from " + sql1 + " t " + sql2 + " ";} else {hql = "select t from " + sql1 + " t";}Query query = session.createQuery(hql);List<Object> obj = query.list();close(session);return obj;}/*** 查詢(對象的形式,只查詢指定ID)*/public static Object selectOnly(Class<?> name, int uid) {Session session = getSession();Object obj = (Object) session.get(name, uid);close(session);return obj;}/*** 分頁查詢*/public static List PageList(String task, int page, int currsize) {Session session = getSession();Query query = session.createQuery("from " + task);query.setCacheable(true);query.setFirstResult((page - 1) * currsize);query.setMaxResults(currsize);List object = query.list();close(session);return object;}// ------------------------------------------------------------/*** 比較合適于有多個條件,也就是where 這種,但只能填兩個key值*/public static Object selectOne(String sql, String value1, String key1,String value2, String key2) {try {// 獲得session對象Session session = getSession();// 創建sql執行Query query = session.createQuery(sql);// 把值加入query.setParameter(value1, key1);query.setParameter(value2, key2);// 用LIST存儲數據List object = query.list();// obj存放的是頭一條數據,由于目標是列表,所以進行轉換Object obj = object.get(0);// 關閉sessionclose(session);if (obj != null) {// 在obj不等于null的情況下,// 也就是查到數據的情況下。// 返回數據return obj;}} catch (Exception e) {}// 否則返回nullreturn null;}/*** 查詢制定列表的記錄總數。 用的是對象,而不是表名稱。 也就是User/System這些.*/public static int selectCount(String db) {Session session = getSession();List<Integer> objlist = session.createQuery("select count(*) from " + db).list();int obj = objlist.get(0);close(session);return obj;} }?
轉載于:https://www.cnblogs.com/xiaoCon/archive/2013/02/26/2933963.html
總結
以上是生活随笔為你收集整理的Hibenate工具类(实现增/删/改/查)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 iOS 应用中实现飞行模式提醒
- 下一篇: SQL SERVER CURSOR