由于有部分模块是没有删除功能的,例如订单类(系统自动生成的订单,不能删除)。所以在设计BaseService和BaseDAO(BaseMapper)时,使用了Java 8 的default关键字对删除方法提供默认实现。
测试包含删除功能的模块时(例如基础数据,接口实现类中重写了delete方法),遇到了如下问题:
首先猜测是不能在默认实现中抛异常,于是修改代码。
再次测试,发现执行了BaseDAO的默认实现方法。
最终发现问题原因:BaseDAO并没有实现类,所以执行了BaseDAO的默认实现。
原来是自己对MyBatis的理解有误,该补补MyBatis的知识了o(╯□╰)o