业务需求:在多个业务表中都有公共字段,如create_time、create_user(插入数据时用到);update_time,update_user(插入/更新数据时用到)。插入数据的时候需要为这些字段赋值,会有大量重复的冗余set方法代码,并且后期如果表结构发生变化,代码也随之需要跟着修改,此时需要修改的代码量过于庞大导致开发效率降低。
实现思路:自定义注解AutoFill,用于标识需要进行公共字段自动填充的方法。然后自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公共字段赋值。在Mapper的方法上加入AutoFill注解。技术点(aop、反射)
代码开发:
1.首先定义好需要填充的公共字段(方便后期表结构修改对应修改需要填充的新的公共字段)
2.自定义注解,用于标识某个方法需要进行功能字段自动填充处理
3.自定义切面,实现公共字段自动填充处理逻辑
4.根据操作类型的不同在mapper层给公共字段赋值
@AutoFill(value = OperationType.INSERT) void insert(Category category);