springboot + mybatis-plus架构下:
让非主键字段以注解方式自动生成32位uuid:

* 自定义注解如下 @Documented @Retention(RetentionPolicy.RUNTIME) @Target({
ElementType.FIELD, ElementType.ANNOTATION_TYPE}) public @interface GenerateUUID
{ String value() default ""; }
* 在字段上的应用方式 @GenerateUUID @TableField(fill = FieldFill.INSERT) private String
uuidCode;
其中
@TableField(fill = FieldFill.INSERT)
为mybatis-plus中设置的引用方法。引用方法设置如下:
3. 实现MetaObjectHandler接口,如上注解为insert则走insertFill方法
@Component public class MyMetaObjectHandler implements MetaObjectHandler {
@Override public void insertFill(MetaObject metaObject) { Object originalObject
= metaObject.getOriginalObject(); try{ Class clazz = originalObject.getClass();
for (Field declaredField : clazz.getDeclaredFields()) { declaredField.
setAccessible(true); if (declaredField.isAnnotationPresent(GenerateUUID.class)
&& declaredField.get(originalObject) == null){ this.setFieldValByName(
declaredField.getName(),IdWorker.get32UUID(),metaObject); } } } catch (
IllegalAccessException e) { e.printStackTrace(); } } @Override public void
updateFill(MetaObject metaObject) { } }

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信