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進行屬性配置,
在這裏插入圖片描述
這是MybatisSqlSessionFactoryBean的源碼,常用屬性已經圈出。
在這裏插入圖片描述

我的錯誤

第一次我只使用了@component進行注入
第二次我採用xml方式配置,但是沒有在MybatisSqlSessionFactoryBean中進行屬性配置如下圖
在這裏插入圖片描述
我總結我的錯誤就是:只考慮到了注入該組件,並沒有考慮到組裝該組件。
如果理解有誤請大佬指點,,,,,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章