A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© hy2014051202 中级黑马   /  2017-6-15 10:00  /  918 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.test.dao;

import java.util.List;
/**
* BaseDao接口
* @author 胡勇
* @ 2017下午8:27:03
* @version 1.0
* @param <T>
*/
public interface BaseDao<T> {
        /**
         * 添加
         */
        void add(T t);

        /**
         * 修改
         */
        void update(T t);

        /**
         * 删除
         */
        void delete(T t);

        /**
         * 根据id查询
         */
        T findOne(int id);

        /**
         * 查询所有
         */
        List<T> findAll();
}













package com.test.dao;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
/**
* BaseDao的实现类
* @author 胡勇
* @ 2017下午8:27:30
* @version 1.0
* @param <T>
*/
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
        private Class pclass;

        public BaseDaoImpl() {
                // 得到当前运行的Class
                Class clazz = this.getClass();
                // 得到当前运行类的父类的参数化类型
                ParameterizedType parameterizedType = (ParameterizedType) clazz
                                .getGenericSuperclass();
                // 得到父类的实际类型参数
                Type[] types = parameterizedType.getActualTypeArguments();
                // 得到Class
                pclass = (Class) types[0];

        }

        public void add(T t) {
                this.getHibernateTemplate().save(t);

        }

        public void update(T t) {
                this.getHibernateTemplate().update(t);

        }

        public void delete(T t) {
                this.getHibernateTemplate().delete(t);
        }

        @SuppressWarnings("all")
        public T findOne(int id) {

                return (T) this.getHibernateTemplate().get(pclass, id);
        }

        @SuppressWarnings("all")
        public List<T> findAll() {
                return (List<T>) this.getHibernateTemplate().find(
                                "from " + pclass.getSimpleName());
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马