`

mybatis-plus中@TableField.fill设置为FieldFill.INSERT_UPDATE不起作用

 
阅读更多
重现步骤
1、定义一个User类,并设置好setter和getter

@TableName("sys_user")
public class User{

    @TableId(value = "UUID",type = IdType.UUID)
    private Long id;

    @TableField("user_name")
    private String name;

    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
   
    //setter & getter ...
}

2、测试代码

(1)插入时,没有给表中的update_time字段设置值

User user = new User();
    user.setName("tom");
    int result = userMapper.insert(user);
    Assert.assertEquals(1, result);

(2)更新时,也没有给表中的update_time字段设置值

User user = new User();
        user.setId(1005025463877996546L);
        user.setName("tom-1");
        int result = userMapper.updateById(user);
        Assert.assertEquals(1, result);
[color=darkred]
[color=red]
解决办法
还需要实现 MetaObjectHandler 接口,并将该类作为Bean配置到 Spring 容器中。我用的是Springboot,写法如下:


@SilenceDN
public class MybatisObjectHandler implements MetaObjectHandler {

@Override
public void insertFill(MetaObject metaObject) {
    setFieldValByName("createTime", LocalDateTime.now(),metaObject);
    setFieldValByName("updateTime",LocalDateTime.now(),metaObject);
}

@Override
public void updateFill(MetaObject metaObject) {
    setFieldValByName("updateTime",LocalDateTime.now(),metaObject);
}
}
分享到:
评论

相关推荐

    mybatis-plus-3.0.zip

    4. **填充公共字段**:通过 `@TableField(fill = FieldFill.INSERT)` 或 `@TableField(fill = FieldFill.UPDATE)` 注解,可以在插入或更新时自动填充某些公共字段,如创建时间、修改时间等。 5. **分页查询**:...

    mybatis-plus 在 idea 中的使用

    - **自动填充**:通过 `@TableField(fill = FieldFill.INSERT)` 或 `@TableField(fill = FieldFill.UPDATE)` 注解,可以自动在插入或更新时填充特定字段,如创建时间和修改时间。 - **关联查询**:使用 `@One`,`@...

    SpringBoot集成MyBatis-Plus

    通过在实体类中添加注解`@TableField(fill = FieldFill.INSERT)`或`@TableField(fill = FieldFill.UPDATE)`来实现。例如: ```java import com.baomidou.mybatisplus.annotation.FieldFill; import ...

    mybatis-plus-advance插件

    3. **填充公共字段**:在插入或更新数据时,可以通过`@TableField(fill = FieldFill.INSERT)`或`@TableField(fill = FieldFill.INSERT_UPDATE)`注解指定需要填充的字段,如创建时间和修改时间等。 4. **分页查询**...

    Mybatis-plus.zip

    只需在实体类中定义对应的注解,如@TableField(fill = FieldFill.INSERT)或@TableField(fill = FieldFill.UPDATE),Mybatis-plus就会在插入或更新时自动填充这些字段。 3. **主键策略**:Mybatis-plus提供了多种...

    SpringBoot集成MyBatis-Plus-Join

    @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.UPDATE) private Date updateTime; } ``` 同时,在Mapper接口的基类中配置填充处理器: ```java import ...

    Mybatis-Plus实战

    1. 自动填充:MP支持字段自动填充,如创建时间、更新时间等,只需在实体类中定义注解@TableField(fill = FieldFill.INSERT)。 2. 分页查询:MP内置了强大的分页插件,可以实现物理分页和逻辑分页,且支持多种数据库...

    Mybatis-Plus插件

    通过在实体类字段上添加注解`@TableField(fill = FieldFill.INSERT)`或`@TableField(fill = FieldFill.UPDATE)`,可以在插入或更新时自动填充这些字段。 2. **CRUD操作简化**: Mybatis-Plus提供了一键生成基础的...

    浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

    @TableField(fill = FieldFill.INSERT_UPDATE) private String name; @TableLogic private Integer deleteFlag; } ``` `@TableId`注解指定了主键字段,`type=IdType.INPUT`表示主键值由外部输入。而`@Key...

    Mybatis-plus实现主键自增和自动注入时间的示例代码

    @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; } ``` 在上面的代码中,我们使用 `@TableField` 注解来指定自动注入时间。其中,`fill` 属性指定了自动注入的类型,我们可以...

    MybatisPlus中@TableField注解的使用详解

    - `fill`属性:用于指定在插入或更新时是否填充字段,如`@TableField(fill = FieldFill.INSERT)`表示在插入时填充该字段。 - `el`属性:用于定义SpEL表达式,例如在插入或更新时根据其他字段动态计算值。 总结来...

    你应该知道的这些Mybatis-Plus使用技巧(小结)

    - Mybatis-Plus 支持自动填充创建时间和更新时间等公共字段,只需要在实体类的字段上使用 `@TableField(fill = FieldFill.INSERT/UPDATE)` 注解即可。 8. **逻辑删除**: - 通过 `@TableLogic` 注解,你可以实现...

    springBoot整合mybatis plus

    - **自动填充**:使用`@TableField(fill = FieldFill.INSERT|UPDATE)`,可以在插入或更新时自动填充字段,如创建时间和更新时间。 - **主键自增**:对于主键类型为整型的字段,可以设置`@TableId(value = "id", type...

    mybatis-plus

    - MP支持自动填充字段,例如创建时间、更新时间和乐观锁版本号等,只需在实体类字段上添加注解`@TableField(fill = FieldFill.INSERT|UPDATE)`。 4. **条件构造器** - `QueryWrapper`和`UpdateWrapper`是条件构造...

    MyBatisPlus介绍入门以及项目集成MyBatisPlus示例代码

    @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.UPDATE) private Date updateTime; } ``` 在Service层,MyBatisPlus提供了简单易用的接口,如插入、更新、删除...

    CRUD的使用和MyBatisPlus配置日志.docx

    例如,使用`@TableField(fill = FieldFill.INSERT)`和`@TableField(fill = FieldFill.INSERT_UPDATE)`注解,可以分别在插入和更新时自动设置时间字段。 在实体类中,`@TableId`注解用于指定主键字段,其`type`参数...

    Mybatis Plus 字段为空值时执行更新方法未更新解决方案

    总结来说,Mybatis Plus在处理字段更新时遵循了不更新空值的策略,但可以通过`@TableField`注解的`fill`属性来改变这一行为,以满足特定场景的需求。对于希望在更新时保留字段原有值(包括NULL)的开发者,这是一个...

    SpringbootMybatisPlusPractice

    4. **填充公共字段**:通过`@TableField(fill = FieldFill.INSERT)`或`@TableField(fill = FieldFill.UPDATE)`,可以设置在插入或更新时自动填充某些字段。 5. **逻辑删除**:Mybatis Plus支持逻辑删除,只需在实体...

Global site tag (gtag.js) - Google Analytics