SSM入门:彻底弄懂Dao层

同一层的接口层:
dao层就是个接口,只有方法签名的
@MybatisDao
public interface PersonalApplyDao extends CrudDao<PersonalApplyBean>{
    
    public void auditSuccess(PersonalApplyBean personalApplyBean);
    public void auditFail(PersonalApplyBean personalApplyBean);
    public void updatesave(PersonalApplyBean personalApplyBean);    

}


直接看CurdDao<T>
注:CrudDao<T> 是一个抽象的接口类,
这个抽象的类不可能被实例化的,只能被继承,
T在本类被继承的时候,会被传递一个实体类,
调用这些方法时,都要传递一个实体类,
在dao这一层,可以看出一个实体类的作用是运输sql语句的所需要的参数的啊
在这里,我们其实又对代码做了分离处理,两个Dao完全可以合并在一起
那是因为定义的这些方法实在是太稳定了!
要把CrudDao看成上述Dao的一个分离:
怎么做dao的分离呢?
1.把稳定的方法(CRUD)分离出来单独做一个CrudDao
2.把不稳定的方法分离出来做成一个Dao
3.让该Dao继承CrudDao
4.为了让CrudDao中的方法可以使用到不仅该类的实体,借助于泛型<T>
  如何使用泛型:
  (1)在CurdDao中用到实体类的方法中的参数都换成 T paramT
  (2)给类CurdDao加上<T>
  (3)对应的子类dao在继承是在<>中传递入对应的实体类就行了

步骤!步骤!步骤!必须总结出步骤!只有知道了步骤才能对编程真有感觉:
因为程序=步骤1+步骤2+步骤3+...+步骤n

这些方法如何调用?在哪里调用?由谁调用?会不会被自动调用?(都是手动调用的)
  
注:在这里泛型的使用完全就是想被继承类可以使用更多的类而已
public abstract interface CrudDao<T> extends BaseDao{
    ...定义查询get(String paramString)方法...
    //抽象方法没有方法体
    //接受的参数通常就是id
    //且这个id通常都是请求中携带的
    public abstract T get(String paramString);
    ...定义get(T paramT)方法...
    public abstract T get(T paramT);
    ...定义findList(T paramT)...
    //这个方法通常是按条件查询,但能查询出多条记录
    public abstract List<T> findList(T paramT);
    ...定义findAllList(T paramT).....
    //这个方法通常是不按条件查询,从而查询所有的记录
    public abstract List<T> findAllList(T paramT);

    ...定义insert(T paramT)方法..
    //这里要求:被传递进来的实体必须拥有插入表的所有字段对应的那些属性
      而这些数据通常来自于前端表单页面
    public abstract int insert(T paramT);
    ...定义update(T paramT)方法....
    //这里通常传递进来的实体对应id的一整条记录
    public abstract int update(T paramT);
    ...定义delete(T paramT)方法...
    //这里传进来的实体,通常对应id的一整条记录
    //这一整条记录哪里来的?归功于get(String paraString)方法
    public abstract int delete(T paramT);


}


再看下BaseDao
public abstract interface BaseDao{


}
是空的
为什么是空的?
没有什么再往里进行分离的了?
万一还有别的要分离进来?
都不确定
那就先写个放在这里吧


 

猜你喜欢

转载自blog.csdn.net/weixin_42204641/article/details/81746093
今日推荐