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 @   流浪2024  阅读(130)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示