黑马程序员技术交流社区

标题: hibernate的BaseDao [打印本页]

作者: hy2014051202    时间: 2017-6-15 10:00
标题: hibernate的BaseDao
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());
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2