package com.sys.dao;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import javax.persistence.Entity;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
/**
*@author ddl
*
*/
public class BaseDaoImpl<T> implements BaseDao<T> {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Class<T> clazz;
public BaseDaoImpl() {
clazz = (Class<T>) getClass();
while (clazz != Object.class) {
Type genType = clazz.getGenericSuperclass();
if (genType instanceof ParameterizedType) {
Type args[] = ((ParameterizedType) genType)
.getActualTypeArguments();
if (args[0] instanceof Class) {
this.clazz = (Class<T>) args[0];
break;
}
}
clazz = (Class<T>) clazz.getSuperclass();
}
}
/**
* 获取实体类名称
*
* @param entityClass
* @return
*@author Administrator
*
*/
public String getEntityName(Class<T> entityClass) {
String entityname = entityClass.getSimpleName();
Entity entity = entityClass.getAnnotation(Entity.class);
if (entity.name() != null && !"".equals(entity.name())) {
entityname = entity.name();
}
return entityname;
}
/**
* 获取实例
*
* @param id
* @return
*@author Administrator
*
*/
public T find(String id) {
T entity=null;
boolean flag = false;
try {
entity=(T) sessionFactory.getCurrentSession().get(clazz, id);
flag = true;
} catch (Exception e) {
flag = false;
}
return entity;
}
/**
* 增加
*
* @param t
* @return
*@author Administrator
*
*/
public boolean save(T t) {
boolean flag = false;
try {
sessionFactory.getCurrentSession().save(t);
flag = true;
} catch (Exception e) {
flag = false;
}
return flag;
}
/**
* @return
*@author Administrator 修改
*/
public boolean update(T t) {
boolean falg = false;
try {
sessionFactory.getCurrentSession().update(t);
falg = true;
} catch (Exception e) {
falg = false;
}
return falg;
}
/**
* 删除
*/
public boolean delete(T t) {
boolean flag = false;
try {
sessionFactory.getCurrentSession().delete(t);
flag = true;
} catch (Exception e) {
flag = false;
}
return flag;
}
/**
* 批量删除
*/
public boolean deletes(String[] ids) {
boolean falg=false;
T entity=null;
try {
for (int i = 0; i < ids.length; i++) {
entity=this.find(ids[i]);
sessionFactory.getCurrentSession().delete(entity);
falg=true;
}
} catch (Exception e) {
falg=false;
}
return falg;
}
@SuppressWarnings("unchecked")
public List<T> getAllList(Class<T> entityClass) {
String entityname=this.getEntityName(entityClass);
List<T> list=null;
try {
String hql="from "+entityname+"";
System.out.println("hql:"+hql+sessionFactory.getCurrentSession());
Query query=sessionFactory.getCurrentSession().createQuery(hql);
list=(List<T>) query.list();
} catch (Exception e) {
list=null;
}
return list;
}
}
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import javax.persistence.Entity;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
/**
*@author ddl
*
*/
public class BaseDaoImpl<T> implements BaseDao<T> {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Class<T> clazz;
public BaseDaoImpl() {
clazz = (Class<T>) getClass();
while (clazz != Object.class) {
Type genType = clazz.getGenericSuperclass();
if (genType instanceof ParameterizedType) {
Type args[] = ((ParameterizedType) genType)
.getActualTypeArguments();
if (args[0] instanceof Class) {
this.clazz = (Class<T>) args[0];
break;
}
}
clazz = (Class<T>) clazz.getSuperclass();
}
}
/**
* 获取实体类名称
*
* @param entityClass
* @return
*@author Administrator
*
*/
public String getEntityName(Class<T> entityClass) {
String entityname = entityClass.getSimpleName();
Entity entity = entityClass.getAnnotation(Entity.class);
if (entity.name() != null && !"".equals(entity.name())) {
entityname = entity.name();
}
return entityname;
}
/**
* 获取实例
*
* @param id
* @return
*@author Administrator
*
*/
public T find(String id) {
T entity=null;
boolean flag = false;
try {
entity=(T) sessionFactory.getCurrentSession().get(clazz, id);
flag = true;
} catch (Exception e) {
flag = false;
}
return entity;
}
/**
* 增加
*
* @param t
* @return
*@author Administrator
*
*/
public boolean save(T t) {
boolean flag = false;
try {
sessionFactory.getCurrentSession().save(t);
flag = true;
} catch (Exception e) {
flag = false;
}
return flag;
}
/**
* @return
*@author Administrator 修改
*/
public boolean update(T t) {
boolean falg = false;
try {
sessionFactory.getCurrentSession().update(t);
falg = true;
} catch (Exception e) {
falg = false;
}
return falg;
}
/**
* 删除
*/
public boolean delete(T t) {
boolean flag = false;
try {
sessionFactory.getCurrentSession().delete(t);
flag = true;
} catch (Exception e) {
flag = false;
}
return flag;
}
/**
* 批量删除
*/
public boolean deletes(String[] ids) {
boolean falg=false;
T entity=null;
try {
for (int i = 0; i < ids.length; i++) {
entity=this.find(ids[i]);
sessionFactory.getCurrentSession().delete(entity);
falg=true;
}
} catch (Exception e) {
falg=false;
}
return falg;
}
@SuppressWarnings("unchecked")
public List<T> getAllList(Class<T> entityClass) {
String entityname=this.getEntityName(entityClass);
List<T> list=null;
try {
String hql="from "+entityname+"";
System.out.println("hql:"+hql+sessionFactory.getCurrentSession());
Query query=sessionFactory.getCurrentSession().createQuery(hql);
list=(List<T>) query.list();
} catch (Exception e) {
list=null;
}
return list;
}
}
================[另一种获取clazz方法,没有试验,]===================
public Class loadClass(String className){
Class clazz=null;
clazz=Thread.currentThread().getContextClassLoader().loadClass(className);
if(clazz==null){
clazz=Class.forName(className);
}
return clazz;
}