1.自定义注解AutoFill
@Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface AutoFill { OperationType value(); }
2.自定义切面类AutoFillAspect,统一拦截加入了autofill注解的方法,通过反射为公共字段赋值.
@Aspect @Component @Slf4j public class AutoFillAspect { @Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)") public void autoFillPointCut(){ } /** * 前置通知 */ @Before("autoFillPointCut()") public void autoFill(JoinPoint joinPoint){ log.info("开始进行公共字段填充..."); } }
3.在mapper的方法上加上autofill注解.如果需要在mybatis-plus默认提供的方法上添加注解,就将mybatis-plus的方法直接拉出来添加即可.
public interface EmployeeMapper extends BaseMapper<Employee> { /** * 根据用户名查询员工 * @param username * @return */ @Select("select * from employee where username = #{username}") Employee getByUsername(String username); @AutoFill(OperationType.INSERT) int insert(Employee employee); }