--------------------------------------------------------BaseDAO----------------------------------------------
package org.taink.common;
import java.io.Serializable;
import java.util.List;
public interface BaseDAO<K extends Serializable, V> {
/**
* 查询所有内容
* @return 返回实体集合
*/
List<V> findAll();
/**
* 按HQL和条件查询数据
* @param hql 执行HQL的语句
* @param params 传入参数
* @return 返回实体集合
*/
List<V> findList(String hql, Object... params);
/**
* 按实体ID查找
* @param id 实体类的主键
* @return 返回实体类
*/
V findById(K id);
/**
* 向数据库增加一个实体类
* @param entity 实体类
*/
void addEntity(V entity);
/**
* 向数据库增加以List封装的实体类
* @param entities
*/
void addEntityes(List<V> entities);
/**
* 删除单个实体对象
* @param entity
*/
void delete(V entity);
/**
* 同时删除多个实体对象
* @param entities
*/
void delete(List<V> entities);
/**
* 修改单个实体对象
* @param entity
*/
void update(V entity);
/**
* 同时修改多个实体对象
* @param entities
*/
void update(List<V> entities);
}
--------------------------------------------BaseDAOImpl----------------------------------------------------------
package com.toggery.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.toggery.dao.BaseDAO;
public class BaseDAOSupport<K extends Serializable, V> extends HibernateDaoSupport implements BaseDAO<K ,V> {
@Override
public void addEntity(V entity) {
getHibernateTemplate().save(entity);
}
@Override
public void addEntityes(List<V> entities) {
for (V entity : entities) {
getHibernateTemplate().save(entity);
}
}
@Override
public void delete(V entity) {
getHibernateTemplate().delete(entity);
}
@Override
public void delete(List<V> entities) {
for (V entity : entities) {
getHibernateTemplate().delete(entity);
}
}
@SuppressWarnings("unchecked")
@Override
public List<V> findAll() {
return getHibernateTemplate().loadAll(getEntityType());
}
@SuppressWarnings("unchecked")
@Override
public V findById(K id) {
return (V) getHibernateTemplate().get(getEntityType(), id);
}
@SuppressWarnings("unchecked")
private Class<V> getEntityType(){
return (Class<V>) ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[1];
}
@SuppressWarnings("unchecked")
@Override
public List<V> findList(String hql, Object... params) {
//return (List<V>) getHibernateTemplate().get(hql, params);
return getHibernateTemplate().find(hql,params);
}
@Override
public void update(V entity) {
getHibernateTemplate().update(entity);
}
@Override
public void update(List<V> entities) {
for (V entity : entities) {
getHibernateTemplate().update(entity);
}
}
}