SSM整合Mybatis-Plus自动填充MyMetaObjectHandler

概述

先说一下在springboot中,我们要使用mybatis-plus做自动填充的步骤

  • 实体类中公共字段,添加@TableField注解
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("bbs_module")
public class Module implements Serializable {
    private static final long serialVersionUID = 1L;
    //版块id
    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;
    private String title;
    private String intro;
    private Integer topicNum;
    private Integer sort;
    //逻辑删除 1(true)已删除, 0(false)未删除
    private Boolean isDeleted;
    //创建时间
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;
    //更新时间
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;
}
  • 配置自动填充的组件MyMetaObjectHandler,并在类上加@component注解进行注入。
@component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("gmtCreate",new Date(),metaObject);
        this.setFieldValByName("gmtModified",new Date(),metaObject);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("gmtModified",new Date(),metaObject);
    }
}

对!这就完成了,因为springboot底层帮我们做好了自动配置,我们只需要根据需求去添加组件即可。
但是最近这个SSM项目中,没有自动配置,遇见了很多坑,就像这个,接下来说说这个应该怎样配置。

ssm中的自动填充配置步骤

首先肯定也是一样,要在实体类中的公共字段上添加@TableField注解,也要把组件MyMetaObjectHandler给出,但是这里不要@component,因为ssm不像springboot会帮我们自动装配。
所有的组件我们不仅应该自己注入,而且要自己进行装配。(@component是注入的过程,而装配的过程我们应该自己做)
在我们的xml配置中,给MybatisSqlSessionFactoryBean进行属性配置,
SSM整合Mybatis-Plus自动填充MyMetaObjectHandler_第1张图片
这是MybatisSqlSessionFactoryBean的源码,常用属性已经圈出。
SSM整合Mybatis-Plus自动填充MyMetaObjectHandler_第2张图片

我的错误

第一次我只使用了@component进行注入
第二次我采用xml方式配置,但是没有在MybatisSqlSessionFactoryBean中进行属性配置如下图
在这里插入图片描述
我总结我的错误就是:只考虑到了注入该组件,并没有考虑到组装该组件。
如果理解有误请大佬指点,,,,,

你可能感兴趣的:(问题总结)