借助net.sunniwell.core封装BaseManager&&EntityDao

我们在学习design patterns的时候都了解过分层的概念。通常情况下,我们会分为action、manager、dao,manager和dao会再次分为interface和impl,为的是遵循设计模式六大原则的依赖倒置原则(Dependence Inversion Principle)–面向接口编程。
在manager和dao层中有很多方法是类似的,比如save、findById、delete…..为了加强代码的复用,我们一般会抽出BaseManager和BaseDao,每条业务线的interface和impl会先继承BaseManager或BaseDao,BaseManager和BaseDao没有的方法,再在自己的业务线写。
BaseManager和BaseDao的作用我们了解了,所以不管是我们自己封装,还是用框架,底层原理都是一样的。这里我们使用net.sunniwell.core的BaseManager和EntityDao替换上文提到的BaseManager和BaseDao。
1.action公共的部分,我们抽出了一个BaseAction,我们自己的action继承BaseAction;

import net.sf.json.JSONObject;  

public class BaseAction<T> {  

    public String OK(){  
        JSONObject jo=new JSONObject();  
        jo.put("result", "ok");  
        return jo.toString();  
    }  
    public String EXSIT(){  
        JSONObject jo=new JSONObject();  
        jo.put("result", "exist");  
        return jo.toString();  
    }  
    public String ERROR(String message){  
        JSONObject jo=new JSONObject();  
        jo.put("result", "error");  
        jo.put("message", message);  
        return jo.toString();  
    }     

}  
@Controller  
@RequestMapping( "/******" )  
public class ******Action extends BaseAction {  
    private Logger log = Logger.getLogger( this.getClass() );  

    ...  
}  

2.manager公共的部分,我们用net.sunniwell.core提供的Manager和BaseManager;

import net.sunniwell.core.orm.manager.Manager;  

public interface ******Manager extends Manager<******Entity> {      
    void save(******Entity info);     
}  
import net.sunniwell.core.orm.manager.BaseManager;  

@Service  
public class ******ManagerImpl extends BaseManager<******Entity, ******Dao>  implements ******Manager {  
    @Resource  
    private ******Dao ******Dao;  

    @Audit(action = "******")  
    public void save(****** info) {  

      ...  
    }  
}  

3.dao公共的部分,我们用net.sunniwell.core提供的EntityDao和HibernateEntityDao;

import net.sunniwell.core.orm.dao.EntityDao;  

public interface ******Dao extends EntityDao<******Entity> {  
} 
import net.sunniwell.core.orm.dao.HibernateEntityDao;  
import org.springframework.stereotype.Repository;  

@Repository  
public class ******DaoImpl extends HibernateEntityDao<******Entity>  implements ******Dao {  
}  

这样,我们便可以在******ManagerImpl调用******Dao的findBy()系列、findUniqueBy()系列、pageQuery()系列、removeBy()、saveOrUpdate()….
daoapi.jar下载地址: http://pan.baidu.com/s/1slKUMHf 密码: 8gvh。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值