Mybatis-Plus自动填充

1.注解填充字段 @TableField(.. fill = FieldFill.INSERT) 生成器策略部分也可以配置!

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 注册时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateTime;

2.自定义实现类 MyMetaObjectHandler,我的数据表中时间字段类型是int类型,单位是秒。新建类文件目录如下:

 

 

@Component
public class MyMetObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        //setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
        this.setFieldValByName("createTime",(int) (System.currentTimeMillis() / 1000),metaObject);
        this.setFieldValByName("updateTime",(int) (System.currentTimeMillis() / 1000),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",(int) (System.currentTimeMillis() / 1000),metaObject);
    }
}

 

3.测试Insert和Update。

@RequestMapping(value = "/edit",method = RequestMethod.POST)
    public Object editUser(@ModelAttribute UserInfo user){

        //updateById方法在修改时,会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中
        Integer id = user.getId();
        boolean res;
        if (id > 0) {
            res = userInfoService.updateById(user);
        } else {
            res = userInfoService.save(user);
        }

        System.out.println(res);

        return "redirect:/user/userList";

    }

 

posted @ 2021-11-23 11:11  流浪2024  阅读(126)  评论(0编辑  收藏  举报