当前使用版本(必填,否则不予处理)
3.3.1.tmp
原始需求
优化问题,我有一个需求,想跟JPA做审计功能那样,在Entity的字段上添加一个注解,该字段便能自动设置操作时间、操作人等
实现思路
第一版:@TableField+@OptionDate(自定义注解) 在MetaObjectHandler接口的对应回调函数中根据注解提取响应的字段设置值(参照了官方的教程) 第二版:相比较第一版同事反馈使用过于复杂,希望一个注解搞定,打算采用一个新的注解聚合@TableField和@OptionDate
实现过程中涉及到的阻碍点
1、@TableField不可被描述在新的注解上,因为Target缺少了ElementType.ANNOTATION_TYPE,遂即在本地复写了@TableField。 2、TableInfoHelper中对@TableField是直接获取的,针对聚合的注解拿不到,我在本地覆写TableInfoHelper后,改用AnnotatedElementUtils.getMergedAnnotation拿到的
总结
不清楚是否有更好的实现方案,在此抛转,希望官方可以针对性的优化下,方便对MP进一步的定制化拓展
Comment From: qmdx
已经调整注解支持可继承(下一个版本可用) https://github.com/baomidou/mybatis-plus/commit/d73e5ddc7bd6d3329e6fd818d278c0b67b27f223
自定义参考: https://zhuanlan.zhihu.com/p/95815525
Comment From: imtzc
已经调整注解支持可继承(下一个版本可用) d73e5dd
自定义参考: https://zhuanlan.zhihu.com/p/95815525
出于防止误用于类上,建议可以使用 @target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) 标注
Comment From: miemieYaho
https://github.com/baomidou/mybatis-plus/commit/0caf23c29442d0496899f4d71bb56d7a01a6fe17