package com.dreamoa.sys;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import com.dreamoa.util.HibernateSessionFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
*此类主要是提供一些常用的方法使用,用来被业务类业务类
*/
public class BaseDAO<T> {
private static Log log = LogFactory.getLog(BaseDAO.class);
private Session session = null;
private Class<T> entityClass;// 通过反射机制获取泛型对应的实体类的类型
private Transaction tx = null;
public BaseDAO() {
Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
entityClass = (Class) params[0];
}
/**
* 创建会话session
*/
public void currentSession() {
this.session = HibernateSessionFactory.getSession();
}
/**
* 关闭session
*/
public void closeSession() {
HibernateSessionFactory.closeSession();
}
/**
* 提交事务
*/
public void commit() {
this.tx.commit();
closeSession();
}
/**
* 开启事务
*/
public void beginTransaction() {
currentSession();
tx = this.session.beginTransaction();
}
/**
* 回滚事务
*/
public void rollback(){
tx.rollback();
}
/**
* 密码加密
*/
public static String encrypt(String str) {
return Base64.byteArrayToBase64(str.getBytes());
}
/**
* 密码解密
*/
public static String decrypt(String s) {
return new String(Base64.base64ToByteArray(s));
}
/**
* 持久化一个对象
* @param obj
*/
public void save(Object obj) {
session.save(obj);
}
/**
* 更新一个对象
* @param obj
*/
public void update(Object obj) {
session.update(obj);
}
/**
* 根据主键id删除一个对象
* @param clazz
* @param idName,主键名称
* @param id,实际值
*/
public void deleteById(String idName, Serializable id) {
String className = entityClass.getSimpleName();
String hql = "delete from " + className + " where " + idName + "=?";
Query query = session.createQuery(hql);
query.setParameter(0, id);
query.executeUpdate();
}
/**
* 根据主键id查询对象
*
* @param id
* @return
*/
public T get(Serializable id) {
return (T) session.get(entityClass, id);
}
}
简单数据操作BaseDAO
最新推荐文章于 2022-12-02 16:59:54 发布