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;
}
}
Hibernate封装好了的工具类
最新推荐文章于 2020-12-12 12:52:47 发布