全面抽取接口_接口开发
- 不废话,直接先上目录结构:(使用的框架是SSM → 刚学习)
-- src
-- main
-- java
-- ling.evid
-- dao
-- root
--> BaseDao.java (抽取出来的公共接口,里面定义了各种方法)
--> UserDao.java (与实体User对应的接口)
--> .....Dao.java (与其它实体对应的接口,继承于BaseDao.java)
-- service
-- root
--> BaseService.java (与Dao层相对应的,抽取出的接口)
--> PageService.java (将处理分页的相关方法(功能)抽取出来的接口)
--> Transition.java (抽象类,主要实现上面两个接口中的所有方法)
-- impl
--> UserService.java (UserService业务类,通过继承Transition类,获得获得能力)
-- entity
--> User.java (各种实体对象)
--> ........
-- servlet
-- tool
--> BasePage.java (分页模型对象)
--> SpringContext.java (该类主要用于得到spring容器中使用的对象,只在test包中用,不是必须的)
-- util
....... 其它什么什么之类的
--test
...各种测试
- 代码部分
(1) dao → root → BaseDao.java
在 BaseDao 这个接口中,理论上是可以把 CRUD 都给整合起来的,
另外,我在接口中也定义了一个泛型,该泛型具体是什么,由子接口声明。
十分注意:此接口只是用来继承的,不管是什么情况下,谁去拿这个接口当做一般接口去使用,谁用谁报错
package ling.evidences.dao.root;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 泛型 T 由子接口去声明
* @Author: LI_Lingfei
* @CreateTime: 2020-12-26 14:24
*/
public interface BaseDao<T> {
//region 查询
/**
* 查询所有
*/
List<T> selectAll();
/**
* 根据Id查询
*/
T selectById(T t);
/**
* 查询总共有多少条数据
*/
int selectAllCount();
/**
* 分页查询
*/
List<T> selectLimit(@Param("start") int start, @Param("pageSize") int pageSize);
//endregion
/**
* 增加
*/
int insert(T t);
/**
* 删除
*/
int delete(T t);
/**
* 修改
*/
int update(T oldS,T newS);
}
(2)dao → SchoolDao