import java.io.Serializable;
import java.util.List;
import com.ssh.common.Order;
// ,
public interface IBaseDao{
//
Serializable save(T t);
void saveOrUpdate(T t);
// ,
void delete(T t);
// ,
void deleteAll(List t);
// , id
void deleteById(Integer id);
// ,
void deleteByPropertie(String name, String value);
//
void update(T t);
//
void update(List list);
//
List queryAll();
// ,
List querybyProperties(String name, String value);
List querybyProperties(String name, List values);
List querybyProperties(List names, List
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.Collection;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public abstract class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao{
// sessionFactory
@Autowired
private void setMySessionFactory(SessionFactory sessionFactory){
// ,@Resource name type 。
super.setSessionFactory(sessionFactory);
}
private Class clazz;
@SuppressWarnings("unchecked")
public BaseDaoImpl(){
// T
// new
ParameterizedType pt =(ParameterizedType) this.getClass().getGenericSuperclass();
//
this.clazz = (Class) pt.getActualTypeArguments()[0];
}
public Serializable save(T t) {
return getHibernateTemplate().save(t);
}
public void delete(T t) {
getHibernateTemplate().delete(t);
}
public void deleteById(Integer id) {
T t=queryById(id);
getHibernateTemplate().delete(t);
}
public void update(T t) {
getHibernateTemplate().update(t);
}
@SuppressWarnings("unchecked")
public List queryAll() {
// from (clazz.getSimpleName())
return (List) getHibernateTemplate().find("from "+clazz.getSimpleName());
}
public T queryById(Integer id) {
return getHibernateTemplate().get(clazz, id);
}
public T queryUnique(String name, String value){
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(clazz).add(Restrictions.eq(name, value));
return (T) criteria.uniqueResult();
}
public void deleteAll(List t) {
getHibernateTemplate().deleteAll(t);
}
public void deleteByPropertie(String name, String value) {
T t=queryUnique(name, value);
getHibernateTemplate().delete(t);
}
public void update(List list) {
for (T t : list) {
getHibernateTemplate().update(t);
}
}
//sessionFactory session。Spring session , ,
// session
//
public List querybyProperties(String name, List values) {
Criteria criteria=getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(clazz).add(Restrictions.in(name, values));
// Session , , session ,spring session
//Criteria criteria = getSession().createCriteria(clazz).add(Restrictions.in(name, values));
return criteria.list();
}
// ,
public List querybyProperties(List names, List values) {
return querybyProperties(names, values, null, null);
}
/* names
* values
* orderBy
* order
*/
public List querybyProperties(List names, List values,
String orderBy, com.ssh.common.Order order) {
// criteria
Criteria criteria=getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(clazz);
// values
if (values != null) {
for (int i = 0; i < values.size(); i++) {
// value
Object value = values.get(i);
if (value instanceof Collection) {
// (name) value, , value
criteria.add(Restrictions.in(names.get(i), (Collection>) value));
}
else if (value instanceof Object[]) {
// value
criteria.add(Restrictions.in(names.get(i), (Object[]) value));
}
else {
// value value
criteria.add(Restrictions.eq(names.get(i), value));
}
}
}
// , order , ,
if(order!=null&&order==com.ssh.common.Order.desc){
criteria.addOrder(Order.desc(orderBy));
}
if(order!=null&&order==com.ssh.common.Order.asc){
criteria.addOrder(Order.asc(orderBy));
}
return criteria.list();
}
// save update
public void saveOrUpdate(T t) {
getHibernateTemplate().saveOrUpdate(t);
}
// , list
public List querybyProperties(String name, String value) {
Criteria criteria=getSessionFactory().getCurrentSession().createCriteria(clazz).add(Restrictions.eq(name, value));
return criteria.list();
}
}
は の のブログで た DAOで、ついでにメモして、 の なときに します.
package spring.demo.dao;
import java.io.Serializable;
import java.util.List;
public interface IGeneralDao {
public T findById(Class type, Serializable id);
public List findAll(Class type);
public void save(Object... entities);
public void update(Object... entities);
public void saveOrUpdate(Object entity);
public void delete(Object... entities);
public void deleteById(Class> type, Serializable id);
public void refresh(Object... entities);
public void flush();
}
package spring.demo.dao.impl;
import java.io.Serializable;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import spring.demo.dao.IGeneralDao;
public abstract class GeneraDao implements IGeneralDao{
@Autowired
private HibernateTemplate hibernateTemplate;
public T findById(Class type, Serializable id) {
return hibernateTemplate.get(type, id);
}
public List findAll(Class type) {
return hibernateTemplate.loadAll(type);
}
public void save(Object... entities) {
for (Object entity: entities) {
hibernateTemplate.save(entity);
}
}
public void update(Object... entities) {
for (Object entity : entities) {
hibernateTemplate.update(entity);
}
}
public void saveOrUpdate(Object entity) {
hibernateTemplate.saveOrUpdate(entity);
}
public void delete(Object... entities) {
for (Object entity : entities) {
if(entity!=null){
hibernateTemplate.delete(entity);
}
}
}
public void deleteById(Class> type, Serializable id) {
if(id==null)
return;
Object entity=findById(type, id);
if(entity==null)
return;
delete(entity);
}
public void refresh(Object... entities) {
for (Object entity : entities) {
hibernateTemplate.refresh(entity);
}
}
public void flush() {
hibernateTemplate.flush();
}
}