提取出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的显示都是要分页显示的,代码重复,我们也可以提取出来,这里,我写到后面的文章里面了,这里就不写了。。。




评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值