首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

提掏出Dao中公共的部分BaseDao

2013-10-23 
提取出Dao中公共的部分BaseDaoBaseDao与BaseDaoImpl在这里,就不说BaseDao了,就直接来说BaseDaoImpl,直接说

提取出Dao中公共的部分BaseDao
BaseDao与BaseDaoImpl      在这里,就不说BaseDao了,就直接来说BaseDaoImpl,直接说出BaseDao中方法的实现。在mvc的开发模式中,在dao中,有很多基础类的方法,比如说:最基本的增删改查CRUD的操作,(create read update delete)这些基本的操作,就没有在各个DAO中写出来了,直接提取出来就行了。      这里,在操作数据的时候需要session,通过sessionFactory中获取,如何在BaseDaoImpl中获取sessionFactory,这里,我个人喜欢用注解的方式。       @Transactional 在这里为什么将事务注入到这里,是因为在中小项目中,通常将dao和service层合并了,每个service都要用到Transactional,这里在父类中注入了,后面就不用书写了。        public class BaseDaoImpl<T>  implements BaseDao<T>{        @Resource         private  SessionFactory sessionFactory;         private Class<T> clazz;         public BaseDaoImpl(){            ParameterizedType pt = (Parameterized) this.class().getGenericSuperclass(); //这里的说明,我在上一篇文章已经说明了            clazz = (Class) pt.getActualTypeArguments()[0];            System.out.println("---------->class = "+clazz );         }        //获取操作与数据库打交道的session        protected  Session getSession(){           return SessionFactory.getCurrentSession();       }
       public void save(T entity){           getSession().save(entity);       }       public void delete(Long id){           Object obj = getSession().get(clazz,id);           getSession().delete(obj);       }      public void update(T entity){           getSession().update(entity);      }      public T getById(Long id){           if(id==null){ return nulll;           }            return (T)getSession().get(clazz,id);      }     public Set<T> getByIds(Long[] ids){           if(ids==null||ids.length==0){                  return null;           }          List list = getSession().createCriteria(clazz).add(Restrictions.in("id",ids)).list();          return new HsahSet(list);     }    public List<T> findAll(){         return getSession().createCriteria(clazz).list();    }    其实分页的方法可以放在这里写,为什么呢,因为一个项目中有很多的action的显示都是要分页显示的,代码重复,我们也可以提取出来,这里,我写到后面的文章里面了,这里就不写了。。。



1楼FansUnion21分钟前
提高生产力:数据持久层(DAO)常用功能–通用API的实现 .n看看我写的这个nhttp://blog.csdn.net/fansunion/article/details/9972449

热点排行