MyBatis-Plus的MetaObjectHandler的一些问题

MetaObjectHandler在实现审计方面的数据操作是比较方便的,使开发者可以大大减少对审计数据填充,减轻代码的量。

但是在使用方面有以下特点,一定要注意

如果在@TableField中,字段指定了fill的动作,那么这个字段就给MetaObjectHandler管理,对应动作的字段就会在sql中,无论是否该字段null值,除非在MetaObjectHandler做了特殊处理。

例如我在Bean中加入以下代码

@TableField(
        fill = FieldFill.INSERT,
        typeHandler = DateTimeTypeHandler.class
)
private DateTime createTime;

这个createTime字段在更新或插入就会被MetaObjectHandler管理,当数据库中create_time的设置如下:

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期',

这样如果在业务中的对象为的createTime的值null时,如果MetaObjectHandler不对createTime做处理时,这时候调用mybatis-plus的insert会报create_time不能为空的异常。

 

posted @ 2025-04-16 15:33  lfm601508022  阅读(68)  评论(0)    收藏  举报