问题描述:
我写的两个接口,改项目状态值,仅是改了项目状态值,岗位状态不会联动更改(比如项目状态改3关闭,岗位不会跟着关闭)
但是原来的修改接口,把项目状态改为3时,岗位状态就跟着关闭了。
我写的接口如下:
service层 调用 数据层mapper updateById 修改项目
分析原来默认修改项目接口的业务逻辑:
1、update接口 再公共的updatecontroller中被调用
2、在projectController中 重写了 公共方法中的 handlerUpdate
3、查看ProjectController 是继承的SuperController
4、这里修改update默认的方法就叫做 handlerUpdate
5、SuperController继承自 SuperService
6、对照service层的接口 项目服务接口 继承自SuperServiceImpl
7、SuperServiceImpl是SuperService的实现,SuperService又是IService的实现,IService中定义了很多默认方法,包括updateById
8、结论再控制层重写的handlerUpdate 对应 service层的updateById方法
9、对比项目的服务接口,update是自定义的,updateById是默认自带的可以根据业务逻辑重写
分析代码经验记录:
1、怎么找到控制层 handlerUpdate 和服务层updateById 的对应关系的
1)调用原来的修改接口,在console中 看到 因项目状态修改 改变岗位状态的 sql语句
debug代码,进入到很多框架的类中,找到最终触发这个触发sql语句的位置打上断点。
2)但一步步往下找也没看到改岗位状态的逻辑代码,往上退debug返回代码时,进入到了ProjectServiceImpl这个类中
的updateById的方法中,这里有通过项目状态3,改岗位状态的逻辑。
3)在ProjectServiceImpl中的 update方法和updateById分别打上断点,调用我写的改状态接口和原来的修改接口 发现分别进入的是不同的方法,对比分析发现了两个不同的执行路径,